Переменные и файлы данных в Postman Collection Runner

У меня есть API-запросы на получение в Postman, который использует файл данных с кодами ваучера для поиска другой информации о коде, такой как название продукта, для которого предназначен код. При использовании инкассо-раннера коды ваучера передаются некорректно и возвращаются данные о продукте.

По какой-то причине я не могу захватить данные из тела ответа и связать их со следующим запросом.

1-й запрос на получение имеет это в разделе тела:

{
    "dealId": 6490121,
    "voucherCode": "J87CM9-5PV33M",
    "productId": 520846,
    "productTitle": "A Book",
    "orderNumber": 23586548,
    "paymentMethod": "Braintree",
    "deliveryNotificationAvailable": true
}

У меня есть это в разделе тестов, чтобы зафиксировать значения:

var jsonData = pm.response.json()    
pm.environment.set("dealId", jsonData.dealId);
pm.globals.set("productId", jsonData.productId);

при размещении следующего запроса в теле:

{
    "dealId":{{dealId}},
    "dealVoucherProductId": {{productId}},
    "voucherCode":"{{VoucherCode}}",
}

и сценарии предварительного запроса:

pm.environment.set("productId", "productId");
pm.globals.set("dealId", "dealId");

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

Что мне не хватает?


person 99ajohnson    schedule 05.02.2018    source источник
comment
Вам не нужен этот набор в ваших предварительных запросах, поскольку он ничего не делает. Ваше тело в следующем запросе недействительно JSON, и все, что вам нужно сделать для "{{VoucherCode}}", - это точная строка. Есть ли причина, по которой у вас установлены переменные environment и global?   -  person Danny Dainton    schedule 05.02.2018


Ответы (1)


Это не установит ничего в этих переменных, кроме добавленных вами строк.

pm.environment.set("dealId", "dealId");
pm.globals.set("productId", "productId");

Чтобы захватить данные ответа и установить их в переменной, вам нужно будет добавить что-то вроде этого на вкладку первых запросов Tests:

var jsonData = pm.response.json()    
pm.environment.set("dealId", jsonData.dealId);
pm.globals.set("productId", jsonData.productId);

В зависимости от схемы ответа первого запроса - эти значения должны быть установлены в качестве переменных.

Почтальон

После этого вы можете просто использовать {{dealId}} и {{productId}} там, где они вам понадобятся.

Если вы используете переменную environment, убедитесь, что вы создали файл для установки этих значений.

person Danny Dainton    schedule 05.02.2018
comment
Спасибо, хотя сейчас выполняется только 1 итерация и сообщается об ошибке, проверьте инструменты разработчика. все, что я вижу, это его undefined - person 99ajohnson; 05.02.2018
comment
Какой ответ на первый запрос jsonData.dealId будет работать только для очень простой схемы. Если вы опубликуете ответ, я могу дать фактический код, который вам нужно добавить. Можете ли вы также опубликовать некоторые изображения запросов от Почтальона. - person Danny Dainton; 05.02.2018
comment
так это тело ответа { "dealId": 6490121, "voucherCode": "J87CM9-5PV33M", "productId": 520846, "productTitle": "A book", "orderNumber": 23586548, "paymentMethod": "Braintree", "deliveryNotificationAvailable": true } - person 99ajohnson; 05.02.2018
comment
Обновите вопрос подробностями, а не в комментариях. - person Danny Dainton; 05.02.2018
comment
отлично, теперь я вижу, что захватывает переменные :), но когда вы запускаете коллекцию в сборщике, я получаю это в devtools. Невозможно прочитать свойство toString из undefined, может это быть из-за того, что я пытаюсь пройти через несколько кодов из файла csv? - person 99ajohnson; 05.02.2018
comment
Поскольку я понятия не имею, что вы отправляете или как настроен Postman, добавление случайной ошибки может означать что угодно. Пожалуйста, обновляйте вопрос, добавляя каждую новую информацию, включая все изображения, так как это оживит то, что вы видите. - person Danny Dainton; 05.02.2018
comment
Давайте продолжим это обсуждение в чате. - person Danny Dainton; 05.02.2018