api - 邮递员多次运行相同的请求
问题描述
我想使用不同的预请求脚本多次运行相同的请求?知道如何在不使用数据驱动 (CSV) 测试的情况下做到这一点吗?
例如,我必须多次(每 2 分钟)运行以下 GET url,但每当我运行它时,我都需要进行不同的预请求测试!
{{url}}/旧版/COL
解决方案
一次性操作:
如果要发送请求 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'))
输出:
推荐阅读
- php - 在 WooCommerce 中即时转换测量单位
- java - 使用 ResourceBundle 时出现 java.util.MissingResourceException
- wpf - 将 Clip 属性(例如 Canvas 的)内的几何集合绑定到 ViewModel 中的 ObservableCollection
- redis - 检查在 aws redis 中设置的没有过期时间的键
- flutter - 如何使用 Flutter_bloc 显示通知
- git - ssh -vT git@github.com kex_exchange_identification:连接被远程主机关闭
- c# - 类可见性及其成员的正确设计 - C# 中具有公共成员的内部类
- c++ - 查找给定范围内最长连续 1 的频率
- mapbox - Mapbox Geocoder 的动态边界框
- php - 已解决:如果总输入大于 85,Laravel 6 Can't get error message of validation of array input (input with same name) with other inputs