【问题标题】:Postman - execute the first request for the first iteration only with multiple requests * multiple iterationsPostman - 仅对多个请求执行第一次迭代的第一个请求 * 多次迭代
【发布时间】:2020-05-02 21:01:10
【问题描述】:
我得到一个邮递员集合,其中包含请求 A、B、C。当我运行多次迭代(例如 3 次迭代)时,我应该确保请求 A 仅在第一次迭代中执行,并且请求 B 和 C 在每次迭代中都执行,如下所示:
迭代 #0 - 请求 A
迭代 #0 - 请求 B
迭代 #0 - 请求 C
迭代 #1 - 请求 B
迭代 #1 - 请求 C
迭代 #2 - 请求 B
迭代 #2 - 请求 C
我在请求A的预请求中尝试了postman.setNextRequest(),但它不能跳过自己,它只对下一个请求生效。
我相信这种情况很常见,一个典型的例子是请求 A 生成一个长寿命令牌代码,该代码将被以下请求/迭代使用。
有人有想法吗?赞赏!
【问题讨论】:
标签:
postman
postman-collection-runner
【解决方案1】:
从集合中移除请求 A
-
在请求 B 的预请求中添加此部分
如果(pm.info.iteration === 0){
pm.sendRequest({
网址:'https://url',
方法:'POST',
标题:{
'内容类型':'应用程序/json',
},
身体: {
模式:'原始',
原始:JSON.stringify({
"a": "a_value"
})
}
}, 函数 (err, res) {
postman.setEnvironmentVariable("mytoken", res.json().token);
});
}
【解决方案2】:
您可以尝试以下解决方案,看看是否能解决您的问题。
- 在请求 B 的 preRequest 脚本中创建该长寿命令牌或您想做的任何事情,并将该长寿命令牌保存在环境变量中,或者通常您可以在环境变量中放置一个标志,例如
request_A_ran_already。让该代码处于 if 条件下,该条件检查环境是否已创建长寿命令牌,如果是,则将跳过该流程。请记住将长寿令牌保存在环境/全局变量中。如果以后要基于它进行操作,则需要持久化它。
让我知道这是否适合您,如果您对此有任何疑问,请发表评论。