Postman-您可以在测试脚本中使用{…}语法吗?
我有一个名为“url”的环境变量,该值是同一环境中其他几个变量的组合 以下是批量环境变量定义:Postman-您可以在测试脚本中使用{…}语法吗?,postman,Postman,我有一个名为“url”的环境变量,该值是同一环境中其他几个变量的组合 以下是批量环境变量定义: scheme:http server:localhost port::55881 application:/ url:{{scheme}}://{{server}}{{port}}{{application}} 如您所见,url包含其他变量 这在实际请求中非常有效(我在寻址服务时使用{{url}),但是当我尝试在脚本测试中使用相同的变量时(在测试选项卡中),我得到的是未评估的版本 v
scheme:http
server:localhost
port::55881
application:/
url:{{scheme}}://{{server}}{{port}}{{application}}
如您所见,url包含其他变量
这在实际请求中非常有效(我在寻址服务时使用{{url}
),但是当我尝试在脚本测试中使用相同的变量时(在测试
选项卡中),我得到的是未评估的版本
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;
});
这会起作用,但我不确定您想要实现什么:
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/
到控制台
{{…}}
语法与环境文件中的语法不一样。因为它只是将所有内容存储为一个字符串
,所以这就是为什么您会得到该输出
您可以使用{{scheme}}://{{server}{{{port}}{{application}}
作为URL,但在测试中不能使用相同的语法
更新 在看到问题的更新后-您能否将单独的变量组合成一个
url
变量,并以以下方式构造infoUrl
变量:
var infoUrl = `${pm.variables.get("url")}ordreinformasjon/${ordrereferanse}?format=json&api_key=${pm.variables.get("api_key")}`
然后使用具有相同url
键但具有不同值的不同环境文件(如果需要将请求指向staging
或production
url)
我还注意到,您正在使用较旧的
测试
语法,而不是较新的语法,这可能会为您清理一些代码。您可以扩展您尝试测试的内容吗?serviceUrl是否与正在使用的url相同(没有变量)?在环境文件中输入的url
是这样的吗?我希望pm.variables.get(…)在返回最终值“”之前对变量进行实际计算。显然这不是它的工作方式,所以我希望有一些重载或其他函数可以为我进行计算,这样我就不必在更改封装变量时更新测试。Postmanpm.environment.get()
函数正是这样做的“从环境文件中获取该密钥的值“不幸的是,所有内容都存储为字符串。你能用一个测试的例子来更新这个问题吗?这似乎是可以做到的,但我不知道你的时间是什么样子。我不认为在我做了第一次脚本化的邮差测试之后,发布我的测试不会让我的问题更加清晰。但我认为,如果我可以在脚本中使用变量,而不知道它们的“内部”值,这将是一个非常好的工具的一个有价值的补充。阅读本文的每个人都不知道您如何尝试实施测试来评估url字符串,问题中的更多信息将帮助您获得答案或可能的解决方案。从定义上讲,它使问题变得清晰。我想我可以为你提供一个解决方案,但是没有看到任何测试(不管它是否是第一个测试),我只是猜测。好的,谢谢Danny,我用我的完整测试扩展了这个问题。