Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 如何在POSTMAN中添加两个请求之间的暂停_Http_Testing_Postman - Fatal编程技术网

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

Http 如何在POSTMAN中添加两个请求之间的暂停,http,testing,postman,Http,Testing,Postman,我在《邮递员》杂志上收集了一些请求。我想在两个请求之间添加一个暂停,但我无法通过阅读他们的文档来实现。有什么想法吗 更新我只想在一个请求后暂停,而不是在集合中的每个请求后暂停。我知道两种可能的方法 方法一 将请求作为集合运行。() 使用Newman(命令行中的邮递员收集运行程序)运行带有--delay标志的收集。延迟输入值以毫秒为单位 方法二 这是我在这里发现的一个不错的黑客。您可以在Postman中向测试脚本添加延迟函数。使用javascript的忙等待是一个很好的方法,但它会使您的CPU变热

我在《邮递员》杂志上收集了一些请求。我想在两个请求之间添加一个暂停,但我无法通过阅读他们的文档来实现。有什么想法吗


更新我只想在一个请求后暂停,而不是在集合中的每个请求后暂停。

我知道两种可能的方法

方法一

将请求作为集合运行。() 使用Newman(命令行中的邮递员收集运行程序)运行带有--delay标志的收集。延迟输入值以毫秒为单位

方法二


这是我在这里发现的一个不错的黑客。您可以在Postman中向测试脚本添加延迟函数。

使用javascript的忙等待是一个很好的方法,但它会使您的CPU变热,应用程序没有响应。我通过邮递员回声找到了这个解决方案

假设您希望在请求a和请求B之间添加一个长延迟

首先,在Request_中,A的测试脚本设置了一个env var来标记开始

environment.delayTimerStart=new Date()

然后,在创建中创建GET请求(这里称为“延迟10s”)。它进入(10秒后返回)

在其测试脚本中,添加

var curDate = new Date();
if (curDate - environment.delayTimerStart < delay_time_in_sec*1000) {
    postman.setNextRequest('Delay 10s');
} else {
    postman.setNextRequest("Request_B");
}
var curDate=新日期();
if(curDate-environment.delayTimerStart
通过这种方式,您可以添加任意长度的延迟


注意:10秒是邮递员回音接受的最大值。如果您只需要短暂的延迟,只需查看当前文档即可。

如果您使用的是Postman Runner

延迟

这是收集运行中每个请求之间的间隔(毫秒)

如果你用的是纽曼

--延迟请求[number]指定请求[number]之间的延迟(毫秒)


我更喜欢使用在线服务Postman Echo的延迟端点(文档为)。只需创建一个使用此服务的请求,并在您希望在其中添加延迟的两个其他请求之间调用它

如果要在继续之前检查某些内容的状态,可以在循环请求的
测试中使用
postman.setNextRequest()
,直到完成某些内容。只需执行以下操作:

1) 创建一个结构如下的集合:

  • 延迟10秒
  • 状态检查
  • 继续处理
2) 在
状态检查中
请求测试:

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;
}

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


如果有人仍在寻找,您可以在集合中多个测试中的1个测试之后/之前添加延迟,您可以使用:

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

其中“number”是毫秒。如果在“测试”中添加,则将在发送请求后执行。如果它是在“请求前测试”中添加的,它将在发送请求之前执行。

如果您有独立的Postman应用程序(支持ES7),并且您打算只在Postman上测试,而不在newman上测试(不支持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();

试试这样的-

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

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

  postman.setNextRequest("nextAPI");

}

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

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

15000这是一个以毫秒为单位的值

谢谢您的回答。方法1就是我一直在做的。但我只想在一个请求后暂停,而不是在每个请求后暂停。看来我要用你的方法2了。邮递员应该增加这个功能。Runscope有它,所以我想我被宠坏了。如果您设置的延迟超过30spostman-echo.com/delay/将此请求放在两个要使用delayThank执行的请求之间,方法II将不起作用。谢谢!这在《邮递员6.5》中对我非常有效,我也找到了。谢谢你的帮助!次要注释:“预请求测试”应该是“预请求脚本”,为了明确语法,插入数字时括号不应该在那里:例如
setTimeout(function(){},1500)下一次TAPI准备了什么?请求文件的名称?我建议在超时之前登录,里面有一个noop,如
()=>{}
。否则在超时结束之前你不会看到它。这正是我要找的!谢谢。你解决这个问题了吗?
setTimeout(() => {}, 15000);