Postman - 有条件地运行请求

问题描述 投票:0回答:2

当使用 Postman 的 Collection Runner 并读取 csv 文件时 - 我有两个请求:一个 Get 和一个 Put。这些请求位于它们自己的文件夹中,我就是从该文件夹中启动 Collection Runner 的。

Get 的响应仅返回 true 或 false。

Put 请求将其翻转为 false,仅此而已。所以我认为这很容易:

var jsonInfo = pm.response.json();
console.log(data["AppId"] + " = " + jsonInfo);
if (jsonInfo === true)
{
    console.log("Setting " + data["AppId"] + " to false.");
    postman.setNextRequest("Change-AppID-Decision-to-False");    
}

因为我不想让 Put 一直运行,所以在使用 Collection Runner 时我没有选中 Put。 Get 开始,我知道它在将语句写入控制台时进入 if 语句的主体,但 Put 永远不会在 Get 请求之后运行。

我承认我可以只运行 Put,因为这里运行的所有 appId 都需要设置为 false,但据我所知,我想知道这是否可能,因为感觉它应该是一个简单且有用的邮递员应该能够做的事情:)。想法?

javascript api postman
2个回答
1
投票

因为我不希望 Put 一直运行,使用时 Collection Runner 我没有选中 Put。

这不起作用,因为 Postman Run 仅考虑已检查的请求。

但是修复应该很容易终止运行:

postman.setNextRequest(null)

所以你的代码应该是这样的:

var jsonInfo = pm.response.json();
console.log(data["AppId"] + " = " + jsonInfo);
if (jsonInfo === true)
{
    console.log("Setting " + data["AppId"] + " to false.");
    postman.setNextRequest("Change-AppID-Decision-to-False");    
} else {
    console.log("Nothing to do now");
    postman.setNextRequest(null)
}

0
投票

你可以使用逆向逻辑!

这意味着如果你愿意的话

if (true) {
  run()
}

但是邮递员没有这个功能,因为请求会自动排队等待运行。因此你可以扭转这个逻辑并做

if (false) {
  skip()
}

解决方案(仅适用于预先请求):

let base_url = pm.variables.get("base_url")
if (!base_url.includes('client_to_run')) {
    pm.execution.skipRequest()
}
© www.soinside.com 2019 - 2024. All rights reserved.