邮递员多次运行相同的请求

Posted

技术标签:

【中文标题】邮递员多次运行相同的请求【英文标题】:Postman running the same request multiple times 【发布时间】:2021-03-16 12:36:05 【问题描述】:

我想用不同的预请求脚本多次运行同一个请求?知道如何在不使用数据驱动 (CSV) 测试的情况下做到这一点吗?

例如,我必须多次(每 2 分钟)运行以下 GET url,但每当我运行它时,我都需要进行不同的预请求测试!

url/legacy/COL

enter image description here

【问题讨论】:

您可以使用相同的逻辑,将任何更改的内容添加到环境变量数组中,然后使用 pop 访问每次迭代的值 ***.com/a/36183449/2159683 【参考方案1】:

一次性操作:

如果要发送请求 10 次(包括第一次请求 11),则创建两个包含计数的环境变量。您可以通过在预请求或测试脚本中复制粘贴以下两行来创建变量(删除所有其他代码)。

 pm.environment.set("repeat",10);
 pm.environment.set("repeat",10);

添加变量后,从脚本中删除上述行。

现在在测试脚本中:

我们可以使用 pm.sendrequest 或 pm.setNextrequest 多次发送请求。这里的示例显示了使用 pm.setNextRequest 再调用 10 次相同的请求。

可以使用 setTimeout javascript 函数设置 2 分钟或 3 分钟的延迟,该函数在执行其中的代码之前等待提到的时间(此处为 3 秒)。因此 setNextrequest 将仅在 3 秒后执行,在这种情况下您可以将其更改为 2 分钟。

let repeatTemp = pm.environment.get("repeatTemp");

if (repeatTemp === 0) 
    pm.environment.set("repeatTemp", pm.environment.get("repeat"));

 else 
    let repeatTemp = pm.environment.get("repeatTemp")
    let increment =  pm.environment.get("increment")===0?15:pm.environment.get("increment")+5
    pm.environment.set("increment",increment)
    pm.environment.set("repeatTemp", repeatTemp-1);
    setTimeout(function ()  postman.setNextRequest("something") , 3000);


因此,如果您的请求名称是“yourrequestname”,那么它将发送此请求 1+10 次

预请求脚本:

在您提到的格式中,yyyy-mm 是错误的,mm 代表分钟而不是年月的月,您必须提供大写 YYYY-MM

let repeatTemp = pm.environment.get("repeatTemp");

let repeat = pm.environment.get("repeat");

if (repeatTemp===repeat) 
    pm.environment.set("increment", 0)



let moment = require('moment')
pm.environment.set('estimatedTimeArrival', moment().add(30 + pm.environment.get("increment"), 'minutes').format("YYYY-MM-DDThh:mm:ss"));
pm.environment.set('estimatedTimeDeparture', moment().add(2, 'hours').format("YYYY-MM-DDThh:mm:ss"));
pm.environment.set('scheduledTimeArrival', moment().add(10, 'minutes').format("YYYY-MM-DDThh:mm:ss"));

console.log(pm.environment.get('increment'))
console.log(pm.environment.get('estimatedTimeArrival'))

输出:

【讨论】:

感谢您查看我的查询。我想更改每次迭代的时间 pm.environment.set('estimatedTimeArrival', moment().add(50, 'minutes').format("yyyy-mm-DDThh:mm:ss")); pm.environment.set('estimatedTimeDeparture', moment().add(2, 'hours').format("yyyy-mm-DDThh:mm:ss")); pm.environment.set('scheduledTimeArrival', moment().add(10, 'minutes').format("yyyy-mm-DDThh:mm:ss"));这是此请求的先决条件测试,我想在每次迭代中将时间从 30 分钟增加到 45、50、55 等!我怎样才能做到这一点?想改一下时间吗? 在 else 内的测试脚本中执行此操作 添加完整答案,请使用集合运行器运行脚本

以上是关于邮递员多次运行相同的请求的主要内容,如果未能解决你的问题,请参考以下文章

使用不同的数据在 Postman 中多次运行请求只运行一次

邮递员 - 无法在集合级预请求脚本中运行 pm.sendRequest()

如何将邮递员请求正文保存在一个地方并在运行时通过

GET 请求在邮递员中有效,但在 Axios 中失败

当授权标题存在时,邮递员拒绝工作[关闭]

Angular - JSON Put 和 Delete 返回 403(但邮递员应用程序运行良好)