邮递员 - 您可以在测试脚本中使用{{...}}语法吗?

时间:2018-01-18 11:59:38

标签: postman

我有一个名为" 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;
});

1 个答案:

答案 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")}`

然后,如果您需要将请求指向urlstaging网址,请使用具有相同production密钥但具有不同值的其他环境文件。

我还注意到您使用较旧的tests语法而不是较新的pm.test()语法,这可能会为您清理一些代码。