如何在postman / newman中传递字符串环境变量

时间:2015-10-02 08:16:32

标签: postman

我在邮递员中有2个通道请求,第一个执行GET列出所有数据,然后根据返回的值设置环境变量。 第二个请求尝试使用环境变量作为字段值进行POST。

请求1

GET /customers?$select=reference&$orderby=reference

带有测试:

tests["Status code is 200"] = responseCode.code === 200;

var data = JSON.parse(responseBody);
var ref = 0;

for (i = 0; i < data.length-1; i++) { 
    if (data[i].reference == ref.toString()){
        ref++;
        postman.setEnvironmentVariable("reference", ref);
    }
}

此时环境变量reference的值为5

请求2

POST /customers

身体:

{
    "reference": "{{reference}}",
    "name": "Name"
}

通过Postman的GUI可以正常工作,但是当从命令行Newman运行时,当请求到达API时,reference的值为{{reference}}而不是5,如预期的那样

我执行了相同类型的替换,环境变量直接来自返回的数据

postman.setEnvironmentVariable('reference', data.reference);

这项工作无论是Postman还是Newman。

有人可以帮助解决为什么在这样的脚本块中设置变量失败了吗?

1 个答案:

答案 0 :(得分:2)

问题在于环境变量的设置,它没有被设置。这个设置应该在for循环之外:

tests["Status code is 200"] = responseCode.code === 200;

var data = JSON.parse(responseBody);
var ref = 0;

for (i = 0; i < data.length-1; i++) { 
    if (data[i].reference == ref.toString()){
        ref++;
    }
}

postman.setEnvironmentVariable("reference", ref); // <--- This