Попытка получить два 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.
Надеюсь, что это поможет вам.