Попытка получить два postman.setNextRequest (не прикован) или два Действия в рабочей области

Я довольно плохо знаком с почтальоном (и программированием) и пытался найти и собрать воедино множество фрагментов сценариев, чтобы они работали так, как я хочу. То, что я хочу, очень просто: у меня есть список идентификаторов, которые я хочу сделать 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 идентификатором в списке.

Поэтому я подумал, что размещение второго POST внутри первого решит эту проблему. Но мне не повезло.

Может кто-нибудь помочь мне?

2 ответа

Спасибо @HalfBloodPrince, из Почтальонного Эха это сработало, но в моем случае это не сработало: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

Таким образом, все аккуратно и организованно. Спасибо

Я пробовал упомянутый вариант использования с примерами API, предоставленными POSTMAN. Вы можете попробовать это?

Первый запрос метода 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.

Надеюсь, что это поможет вам.