Это выдержка из статьи «Как подготовить данные для запроса в Postman через pre-request».
В Postman есть функция pm.sendRequest(), которая позволяет выполнять запросы до выполнения вашего основного запроса. Но есть проблемка, когда мы хотим вызвать несколько запросов подряд...
Кажется, что это будет легко. Просто напишем 2 pre-request и вызовем их подряд:
pm.sendRequest(req1, done);
pm.sendRequest(req2, done);
Но если второй запрос зависит от первого, он упадет. Почему? Потому что функция pm.sendRequests асинхронна. Это значит, что она сразу отправит оба запроса, а не будет дожидаться, когда отработает req1, чтобы запустить req2.
Если мы хотим, чтобы запрос req2 отработал строго после выполнения req1, необходимо вызвать его внутри sendRequest по req1 (источник этого способа):
pm.sendRequest(req1, function () {
pm.sendRequest(req2, done);
});
Попробуем на бесплатной системе Users. Вызываем метод getUser. У него в ответе много разных полей — вот было бы здорово, если бы они все были заполнены на тестовом юзере. А как это сделать?
Вообще в Users есть метод createuser, который решает эту проблему за один запрос. Но предположим, что такого метода нет. И единственный вариант — сначала пользователя создать через doregister, а потом заполнить все поля через fullupdateuser.
Вот так будет выглядеть pre-request скрипт, в котором запросы идут синхронно, по порядку:
const req_1_create = {
url: 'http://users.bugred.ru/tasks/rest/doregister',
method: 'POST',
body: {
mode: 'raw',
raw: JSON.stringify({
email: "test_habr_1@mail.com",
name: "Хабр 1",
password: 1
})
}
};
const req_2_update = {
url: 'http://users.bugred.ru/tasks/rest/fullupdateuser',
method: 'POST',
body: {
mode: 'raw',
raw: JSON.stringify({
email: "test_habr_1@mail.com",
name: "Васенька",
birthday: "01.01.1900",
gender: "m",
date_start: "11.11.2000",
hobby: "Валяться на диване",
name1: "Тестовый, ясен пень",
surname1: "Иванов",
fathername1: "Петров",
cat: "Маруся",
dog: "Ушастый",
parrot: "Васька",
cavy: "Кто ты?",
hamster: "Хомяк",
squirrel: "Белая горячка к нам пришла",
phone: "333 33 33",
adres: "адрес 1",
inn: "123456789012"
})
}
};
pm.sendRequest(req_1_create, function () {
pm.sendRequest(req_2_update, function (err, res) {
console.log(err ? err : res.json().message); })
});
Отправляем запрос — да! В ответе у нас уже имя «Васенька», то есть исправленные данные:
См также:
Что такое pm.sendRequest в Postman — базово о том, что это за функция такая
Как подготовить данные для запроса в Postman через pre-request — удобная статья на хабре, состоящая из этих двух мини-статей
Комментариев нет:
Отправить комментарий