Как связать эти два запроса почтальона

Я новичок в Postman, и я пытаюсь автоматизировать использование этих двух запросов. Первый - это запрос POST, который возвращает JSON с одной парой ключ: значение (id) в нем. Второй - запрос POST, который просто возвращает 200 OK.

Пока мне удалось сохранить id из ответа 1-го запроса на переменную окружения.

Однако мне все еще нужно сделать следующее: после отправки 1-го запроса, подождите около 30 секунд, поместите идентификатор из первого запроса в URL-адрес 2-го запроса, затем отправьте 2-й запрос.


person damnatus    schedule 03.02.2021    source источник


Ответы (1)


Чтобы подождать 30 секунд, используйте setTImeout в скрипте предварительного запроса:

setTimeout(()=>{},30000)

Это подождет 30000 секунд

Теперь, чтобы отправить URL-адрес идентификатора, вы можете напрямую добавить его в URL-адрес как {{id}} или добавить в сценарий предварительного запроса:

pm.request.addQueryParams({key:"id",value:pm.variables.get("id")})

если вы хотите запускать запрос снова и снова, пока не получите 200:

добавьте это в тестовую часть запроса 2

if (pm.response.code !== 200) {
    setTimeout(()=>{postman.setNextRequest(pm.info.requestName)},5000)
    

}

Примечание: есть автоматическая задержка между запросами в почтальоне, вы также можете использовать это.

Также setNextRequest работает, только если вы запускаете с помощью newman или colection runner

person PDHide    schedule 03.02.2021
comment
Спасибо, это работает. Теперь могу я повторить второй запрос несколько раз (с паузой в 5 секунд между ними), пока не получу ответ 200 OK? - person damnatus; 04.02.2021
comment
@damnatus вы делаете это вручную или с помощью автоматизации? - person PDHide; 04.02.2021
comment
обновил ответ - person PDHide; 04.02.2021
comment
Я использую Collection Runner, но если это возможно, вручную запустив 1-й запрос, я буду рад узнать его. - person damnatus; 04.02.2021
comment
Первый запрос @damnatus работает как для бегуна коллекции, так и для manuall, но, отправляя снова и снова запрос 2 автоматически, вы должны использовать pm.sendrequest или сборщик. Я обновил ответ, вы можете попробовать это - person PDHide; 04.02.2021
comment
Как мне заменить имя запроса в pm.info.requestName? Мой второй запрос называется просто запрос 2 - person damnatus; 04.02.2021
comment
@damnatus, вам не нужно его заменять, когда вы сохраняете его в разделе теста reqeust2 pm.info.requestname возвращает имя самого запроса, который является request2 - person PDHide; 04.02.2021
comment
просто используйте код как есть - person PDHide; 04.02.2021
comment
спасибо (я только что понял, это просто означает использовать ЭТОТ запрос, ха-ха) - person damnatus; 04.02.2021
comment
не могли бы вы принять ответ, щелкнув значок галочки, если это помогло - person PDHide; 04.02.2021