Как отправить значение индекса массива в тело JSON в Почтальоне - PullRequest
0 голосов
/ 11 октября 2018

Я объединяю несколько запросов для имитации сквозного сценария в почтальоне.

У меня есть массив значений, который был возвращен из первого запроса.Я установил массив как переменную среды, чтобы к нему могли обращаться другие последующие запросы в моей коллекции.

pm.environment.set("travArray", travArray);

Консольный вывод travArray выглядит следующим образом:

0:"d4faf286-ab68-448b-87cb-ad6a7030bc57"
1:"2e21ab1f-25be-49ab-a984-db529022cf0f"
2:"9a1d942c-4048-48a7-acfc-7a1c9563c528"

Далее я пытаюсь опубликовать запрос json с каждым из этих проиндексированных значений.В теле (необработанном) запросе это выглядит так:

    "travelers": [
    {
        "id": "{{travArray[0]}}",
        "firstName": "teaaf",
        "lastName": "fadfadsfads",
        "travelerType": "ADULT"
    },
    {
        "id": "{{travArray[1]}}",
        "firstName": "sdfsfsdf",
        "lastName": "sdfsfsd",
        "travelerType": "ADULT"
    },
    {
        "id": "{{travArray[2]}}",
        "firstName": "sdfsdf",
        "lastName": "sdfsfsdf",
        "travelerType": "ADULT"
    }
],

Но использование этого синтаксиса {{travArray [1]}} не позволяет проанализировать фактическое значение, когда необработанный запрос отправляется в конечную точку API.

Интересно, что когда я просто использую {{travArray} - без индексной нотации, отправляется все содержимое массива.

пример вывода:

id:"d4faf286-ab68-448b-87cb-ad6a7030bc57,2e21ab1f-25be-49ab-a984-db529022cf0f,9a1d942c-4048-48a7-acfc-7a1c9563c528"
firstName:"teaaf"
lastName:"fadfadsfads"
travelerType:"ADULT"

Может кто-нибудь сказать мне, как анализировать значение индекса массива в запросе тела json?

Спасибо!

1 Ответ

0 голосов
/ 17 июня 2019

Я новичок в сценариях Postman, так что это мой метод noob:

Вам нужно передать расположение массива в тестовый скрипт.

var jsonData = JSON.parse(responseBody);
pm.environment.set("travArray", travArray.id[0]);

Вы можетеВыполните итерацию массива, задав переменную и затем применив метод .setNextRequest ().

Установите индексную переменную в вашей среде.Затем выполните несколько рекурсивных сценариев:

var index = parseInt(pm.environment.get("index")); // Get index
var jsonData = JSON.parse(responseBody); // Deserialize the return
pm.environment.set("travArray", travArray.id[index]); // Get the index of the return
pm.environment.set("index", index + 1); // Increment the index
if (index >= jsonData.travArray.id.length) { // Test if another value exists
    postman.setNextRequest(null) // End script if not needed
}  
postman.setNextRequest("next_request"); // Call the next request

После обработки другого запроса вы можете добавить .setNextRequest () к сценарию и указать его обратно на первый запрос.При вызове .setNextRequest (null) Почтальон прекратит выполнение итерации.

Удачи!

...