如何在POSTMAN中的两个请求之间添加暂停

ftf50wuq  于 2023-01-20  发布在  Postman
关注(0)|答案(9)|浏览(159)

我有一个收集的请求在邮政。我想添加一个暂停之间的两个请求,但我无法找到一种方法来做到这一点,从阅读他们的文档。有什么想法?

  • UPDATE* 我只想在一个请求后暂停,而不是在集合中的每个请求后暂停。
wlzqhblo

wlzqhblo1#

如果有人还在寻找这个-您可以在集合中的许多测试之一之后/之前添加延迟,您可以用途:

setTimeout(function(){}, [number]);

其中“number”是毫秒数。如果在“测试”中添加,则将在发送请求后执行。如果在预请求脚本中添加,则将在发送请求前执行。

sbtkgmzw

sbtkgmzw2#

使用javascript的忙碌wait是一个很好的破解方法,但是它会让你的CPU过热,应用程序没有响应。
假设您想在Request_A和Request_B之间添加一个长延迟。
首先,在Request_A的测试脚本中设置一个env var来标记开始。
environment.delayTimerStart = new Date();
然后,在创建中创建一个GET请求(这里称为'Delay 10 s'),它在https://postman-echo.com/delay/10上执行一个GET(10 s后返回)
在其测试脚本中,添加

var curDate = new Date();
if (curDate - environment.delayTimerStart < delay_time_in_sec*1000) {
    postman.setNextRequest('Delay 10s');
} else {
    postman.setNextRequest("Request_B");
}

通过这种方式,您可以添加任意长度的延迟。
注意:10秒是postman-echo可以接受的最大值。如果你只需要一个很短的延迟,简单的GET https://postman-echo.com/delay/[1~10]

oxcyiej7

oxcyiej73#

像这样试试-

if(jsonBody.responseCode=="SUCCESS"){

  setTimeout(function(){
          console.log("Sleeping for 3 seconds before next request.");
  }, 3000);

  postman.setNextRequest("nextAPI");

}
zbwhf8kr

zbwhf8kr4#

我知道两种可能的方法

方法一

将请求作为集合运行。(https://www.getpostman.com/docs/collections)使用纽曼(Postman的命令行集合运行程序)运行带有--delay标志的集合。延迟输入值以毫秒为单位。

方法二

这是我在https://github.com/postmanlabs/postman-app-support/issues/1038中发现的一个很好的破解。你可以在Postman中的测试脚本中添加一个延迟函数。

rxztt3cl

rxztt3cl5#

举个简单的例子,我相信你会理解的。

setTimeout(() => {}, 15000);

15000这是毫秒值

fhity93d

fhity93d6#

如果您正在使用Postman Runner,请查看当前文档

延误

这是收集运行中每个请求之间的时间间隔(毫秒)。
https://www.getpostman.com/docs/postman/collection_runs/starting_a_collection_run
如果你用的是纽曼
--delay-request [number] Specify a delay (in ms) between requests [number]
https://www.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman

klsxnrf1

klsxnrf17#

如果您有独立的Postman应用程序(支持ES7),并且您打算只在Postman上测试,而不是在纽曼(不支持ES7)上测试,那么您可以在您想要延迟的请求的预请求脚本中包含如下内容:

function foo() {
    return (new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("done!");   // passing argument is optional, can just use resolve()
        }, 10000)   // specify the delay time in ms here..
    }))
}

async function waitForMe() {
    await foo().then((val) => {
        console.log(val);  // not required, you can just do an await without then
    })
}

waitForMe();
34gzjxbg

34gzjxbg8#

我更喜欢使用在线服务Postman Echo的延迟端点(文档在这里)。只需创建一个使用此服务的请求,并在您希望添加延迟的两个其他请求之间调用它。
如果你想在继续之前检查一些事情的状态,你可以在一个请求的Tests中使用postman.setNextRequest()来循环,直到一些事情已经完成。
1)创建结构如下的集合:

  • 延迟10秒
  • 状态检查
  • 继续处理

2)在Status Check请求测试中:

if(responseBody.has("Success")) //or any other success condition
{
    postman.setNextRequest('Continue Processing');
    tests["Success found"] = true;
}
else
{
    postman.setNextRequest('Delay For 10 Seconds');
    tests["No success found"] = true;
}
mbskvtky

mbskvtky9#

您可以使用JavaScript的setTimeout方法。这将确保您的方法将在给定的延迟后执行。

setTimeout(checkStatusCode, 500);

    function checkStatusCode() {

        pm.sendRequest('https://postman-echo.com/get', function (err, res) {

            tests['status code should be 200']= res.code ===200;

        });
    }

相关问题