我有一个名为" url"的环境变量,该值是同一环境中其他几个变量的组合。
以下是批量环境变量定义:
scheme:http
server:localhost
port::55881
application:/
url:{{scheme}}://{{server}}{{port}}{{application}}
如您所见,url包含其他变量。
这在实际请求中效果很好(我在使用{{url}}
处理我的服务时),但是当我尝试在脚本化测试中使用相同的变量时(在Tests
标签中) ),我得到了未经评估的版本。
var serviceUrl = pm.variables.get("url");
console.log(serviceUrl); //Yields {{scheme}}://{{server}}{{port}}{{application}}
有没有办法在我的测试中获得评估值?
谢谢!
完成测试以获得更多洞察力:
var jsonData = JSON.parse(responseBody);
tests["Status code is 200"] = responseCode.code === 200;
var ordrereferanse = jsonData.Ordrereferanse;
tests.OrdreReferanse = ordrereferanse.length > 0;
//Have to do this
var scheme = pm.variables.get("scheme");
var server = pm.variables.get("server");
var port = pm.variables.get("port");
var application = pm.variables.get("application");
var api_key = pm.variables.get("api_key");
var serviceUrl = scheme + "://" + server + port + application;
//Instead of this - an environment variable defined like this "{{scheme}}://{{server}}{{port}}{{application}}"
//var serviceUrl = pm.variables.get("url");
//remaining test - go to url to verify that the resource is created and the order reference is set
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;
});
答案 0 :(得分:1)
这可行,但我不确定你想要实现的目标:
var scheme = pm.variables.get("scheme")
var server = pm.variables.get("server")
var port = pm.variables.get("port")
var application = pm.variables.get("application")
console.log(`${scheme}://${server}${port}${application}`)
这会将http://localhost:55881/
注销到控制台。
{{...}}
语法与环境文件中的语法不同。因为它只是将所有内容存储为string
所以这就是为什么你会得到那个输出。
您可以使用{{scheme}}://{{server}}{{port}}{{application}}
作为网址,但不能使用相同的语法在测试中使用。
<强>更新强>
在看到问题的更新后 - 您是否可以将单独的变量组合到单个url
变量中,并按以下方式构造infoUrl
变量:
var infoUrl = `${pm.variables.get("url")}ordreinformasjon/${ordrereferanse}?format=json&api_key=${pm.variables.get("api_key")}`
然后,如果您需要将请求指向url
或staging
网址,请使用具有相同production
密钥但具有不同值的其他环境文件。
我还注意到您使用较旧的tests
语法而不是较新的pm.test()语法,这可能会为您清理一些代码。