Postman测试脚本中如何获取已解析的环境变量url值?
在Postman测试脚本中获取已解析的嵌套环境变量
我完全懂你遇到的这个困扰——你定义了一个由其他环境变量拼接而成的url变量,在请求里调用{{url}}能正常解析,但在Tests脚本里用pm.variables.get("url")拿到的却是未替换的原始模板字符串,只能手动逐个获取子变量再拼接。其实不用这么麻烦,有个直接的方法能拿到已解析的完整值!
解决方案:使用pm.environment.replaceIn()
Postman提供了pm.environment.replaceIn()方法,它会自动解析字符串中的环境变量引用,包括这种嵌套的变量组合。你只需要把{{url}}作为参数传入这个方法,就能直接得到解析后的URL:
var serviceUrl = pm.environment.replaceIn("{{url}}");
为什么pm.variables.get()不行?
pm.variables.get()的作用是直接获取变量的原始存储值,它不会去解析值里面包含的{{xxx}}占位符。而replaceIn()方法的设计就是专门处理这类带有变量引用的字符串,会自动遍历环境变量(以及其他变量层级)去替换对应的占位符,刚好适配你这种嵌套变量的场景。
修改后的完整测试代码
把原来手动拼接的部分替换成上面的方法,你的测试代码会简洁很多:
var jsonData = JSON.parse(responseBody); tests["Status code is 200"] = responseCode.code === 200; var ordrereferanse = jsonData.Ordrereferanse; tests.OrdreReferanse = ordrereferanse.length > 0; // 直接获取解析后的url变量值 var serviceUrl = pm.environment.replaceIn("{{url}}"); var api_key = pm.variables.get("api_key"); // 剩余测试逻辑 var infoUrl = serviceUrl + "ordreinformasjon/" + ordrereferanse + "?format=json&api_key=" + api_key; pm.sendRequest(infoUrl, function (err, response) { var info = response.json(); console.log(info); tests.OrdreInformasjonOrdreReferanse = info.OrdreReferanse === ordrereferanse; });
内容的提问来源于stack exchange,提问作者HaraldV
相关产品推荐
相关产品推荐

