0

我对邮递员(和编码)很陌生,并且试图找到并拼凑许多脚本片段,以使其按我想要的方式工作。我想要的非常简单:我有一个 ID 列表,我想在每个 ID 中创建一个 POST,获取一个 responseBody 作为变量并执行另一个 POST。我想我已经接近了,但我无法让它发挥作用。

我试过:同一个集合中的两个 POST 请求并运行集合。在第一个请求中,我有一个 POST

https://APIADDRESS/?order_id {{orderid}}&contract[copy_order_data]=true

在预请求脚本选项卡上:

var orderids = pm.environment.get(“orderids”);

if (!orderids) {
orderids = [“bc46bf79-2846-44ed-ac4d-78c77c92ccc8”,“81aacc33-1ade-41a3-b23e-06b03b526b8f”];
}

var currentOrderId = orderids.shift();
pm.environment.set(“orderid”, currentOrderId);
pm.environment.set(“orderids”, orderids);

在测试选项卡上:

var orderids = pm.environment.get(“orderids”);

if (orderids && orderids.length > 0) {
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable(“invoice.id”, jsonData.invoice.id);
postman.setNextRequest(“Create invoice”);
} else {
postman.setNextRequest(null);

}

invoice.id 是一个环境变量,其中填充了第一个操作/帖子的响应正文,然后在第二个操作/帖子上使用该变量。

然后第二个请求将是一个 POST

https://APIADDRESS/invoices/ {{invoice.id}}/finalize.json

当然,这是行不通的。要么它不运行集合中的第二个请求,要么它不循环到列表中超过 1 个 ID。

所以我认为将第二个 POST 放在第一个 POST 中可以解决它。但我没有运气。

可以请人帮助我吗?

4

2 回答 2

0

我已经使用 POSTMAN 提供的示例 API 尝试了提到的用例。你能试试吗?

第一个 POST 方法请求https ://postman-echo.com/post

第一个 POST 方法的预请求脚本

var orderids  = pm.environment.get("orderids");

if(!orderids ){
    orderids = ["bc46bf79-2846-44ed-ac4d-78c77c92ccc8","81aacc33-1ade-41a3-b23e-06b03b526b8f"];
}

var currentOrderId = orderids.shift();
pm.environment.set("orderid", currentOrderId);
pm.environment.set("orderids", orderids);

第一个 POST 方法的测试选项卡

var orderids = pm.environment.get("orderids");
if (orderids && orderids.length > 0) {
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("invoice.id", jsonData.headers.host);
postman.setNextRequest("Test1");
} else {
postman.setNextRequest(null);
}

第二种 POST 方法请求https ://postman-echo.com/post?key= {{invoice.id}}

执行上述集合后,它将在环境变量中设置 orederids 和 invoice.id 值,然后调用下一个 POST 方法。

希望这会帮助你。

于 2019-07-16T10:51:41.650 回答
0

谢谢@HalfBloodPrince,它来自邮递员Echo,但在我的情况下它没有:S 我设法让它工作的是使用Json文件作为Orderids列表。在那种情况下,我已经分离了所有请求。

请求 1 - https://APIADDRESS/?order_id {{orderid}}&contract[copy_order_data]=true

测试选项卡:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("invoice.id", jsonData.invoice.id);

请求 2 - https://APIADDRESS/invoices/ {{invoice.id}}/finalize.json

这样一来,一切都井井有条。谢谢

于 2019-07-18T16:37:32.533 回答