如何在 postman/newman 中传递字符串环境变量
How to pass a string environment variable in postman/newman
我在 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
与 body:
{
"reference": "{{reference}}",
"name": "Name"
}
这通过 Postman 的 GUI 工作正常,但是当从命令行 Newman 运行 时,当请求到达 API 时,reference
的值是 {{reference}}
不是预期的 5
。
我已经执行了相同类型的替换,环境变量直接从返回的数据中设置
postman.setEnvironmentVariable('reference', data.reference);
这在 Postman 或 Newman 中都有效。
有人可以帮忙解释为什么在这样的脚本块中设置变量会失败吗?
问题出在环境变量的设置上,没有设置。这个的设置应该在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
我在 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
与 body:
{
"reference": "{{reference}}",
"name": "Name"
}
这通过 Postman 的 GUI 工作正常,但是当从命令行 Newman 运行 时,当请求到达 API 时,reference
的值是 {{reference}}
不是预期的 5
。
我已经执行了相同类型的替换,环境变量直接从返回的数据中设置
postman.setEnvironmentVariable('reference', data.reference);
这在 Postman 或 Newman 中都有效。
有人可以帮忙解释为什么在这样的脚本块中设置变量会失败吗?
问题出在环境变量的设置上,没有设置。这个的设置应该在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