postman 如何多次运行单个端点?

qnzebej0  于 2023-04-06  发布在  Postman
关注(0)|答案(4)|浏览(177)

我有一个集合,它有三个端点。第一个端点创建一个资产,第二个端点向资产添加一个文件,第三个端点列出所有资产。
我如何在Runner的每个迭代中运行第二个程序(向资产添加文件的程序)多次?
我希望测试能够创建一个资产,并为每个迭代添加多个文件。
有什么建议吗?我知道我可以复制端点,但我想知道是否有一种编程的方法来做到这一点。

hyrbngr7

hyrbngr71#

  • 创建2个环境变量:
    • “Counter”*(您希望请求运行的次数)
    • “RequestNumber”* = 1(跟踪当前请求号)
  • 将此代码添加到要多次运行的请求的测试部分:
const counter = pm.environment.get("Counter");
const requestNumber = pm.environment.get("RequestNumber") || 1;
if (requestNumber < counter) {
    postman.setNextRequest("RequestName");
    requestNumber ++;
    pm.environment.set("RequestNumber", requestNumber);
}
else {
    pm.environment.set("RequestNumber", 1);
}
mcdcgff0

mcdcgff02#

不使用postman.setNextRequest(),一种更简单的访问同一端点的方法是使用pm.sendRequest()
TestPre-request Script 中,您可以创建一个 request object,它将描述您想要发送的请求 (URL,HTTP方法,header body等) 并将其放入pm.sendRequest() * 函数 * 中。
考虑:

const requestObject = {
    url: 'https://postman-echo.com/post',
    method: 'POST',
    header: 'headername1:value1',
    body: {
        mode: 'raw',
        raw: JSON.stringify({ key: "this is json" })
    }
}

pm.sendRequest(requestObject, (err, res) => {
    console.log(res);
});

要多次运行相同的请求,只需将函数放入for/for..in/for..of/forEach * 循环 * 中。
考虑:

for(let iteration = 0; iteration < 5; iteration++) {
  pm.sendRequest(requestObject, (err, res) => {
      console.log(res);
  });
}

如果你愿意,你可以在 loop 中修改requestObject
查看Postman文档了解更多详细信息。

tmb3ates

tmb3ates3#

到目前为止,还没有使用Postman的直接解决方案,可以在文件夹/集合中为同一请求配置多个命中。
不过,你可以在Pre-request script部分编写一些代码,通过添加一个计数器,其中包含你想要的命中次数,并使用你当前的请求调用postman.setNextRequest("request_name")方法(* 从here阅读更多信息 )。
在Postman应用程序范围之外,您可以导出您的集合(作为JSON文件)并使用newman编写一些JavaScript代码,这是Postman的命令行伴侣实用程序(
更多关于纽曼的信息来自here *),它可以获得一个run方法,其中包含大量迭代计数和数据选项,这将有助于您(例如,将第二个请求放入文件夹并迭代)。
希望能有所帮助!

gg58donl

gg58donl4#

Postman团队为此创建了一个tutorial
它包括在Pre-request Script部分中添加以下内容:

pm.variables.set("retryCount",3)

然后在“测试”部分添加以下内容:

pm.variables.get("retryCounter") === undefined ? 
pm.variables.set('retryCounter', pm.variables.get("retryCount")) : null
retryCount = pm.variables.get("retryCounter");
if (retryCount > 1) {
    pm.variables.set('retryCounter', --retryCount)
    postman.setNextRequest(pm.info.requestName);
}

最后,只需在集合运行器中运行集合。

相关问题