api - postman 多次运行相同的请求

标签 api automated-tests postman postman-pre-request-script

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

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

{{url}}/legacy/COL

enter image description here

最佳答案

一次性操作:

如果要发送请求 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'))

输出:

enter image description here

关于api - postman 多次运行相同的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65143874/

相关文章:

javascript - 是否可以知道我的访客是否登录了 Facebook?

android - 带有改造 Android 的可选文件

testing - Cypress : Run same test on 2 different url (to avoid copy paste same code)

c# - 从命令行使用 IIS 运行 C# 类库

Spring Boot oauth : unsupported grant type

javascript - 使用开发者 API 获取 Soundcloud 'liked' 播放列表

JavaScript pCloud API 调用获取用户信息出现错误

android - 无法解析 com.android.support.test :runner:1. 0.0 和 'com.android.support.test.espresso:espresso-core:3.0.0'

java - 了解 Postman 请求是如何在 java 中构造和复制的

curl - 如何将 cURL 命令导入 POSTMAN