【问题标题】:Postman - Ignoring a request from the runner based on iteration count邮递员 - 基于迭代计数忽略来自跑步者的请求
【发布时间】:2021-03-22 03:38:33
【问题描述】:

我必须在两个不同的国家/地区级别上运行我的集合,因此我将我的迭代设置为一个国家/地区的一次迭代,但某些端点不是特定于国家/地区的,不需要运行两次。

有没有一种方法可以避免基于迭代在运行器中只运行某些端点一次?

我通过在我的 data.csv 中添加一个迭代计数列来尝试这种方式

if (pm.iterationData.get(“Iteration Count”) === 1) {
  postman.setNextRequest(‘request name1’);
} else {
  postman.setNextRequest(‘request name2’);
}

但它没有帮助。

【问题讨论】:

  • 请添加集合结构、请求、正文屏幕截图,并说明 country1 和 country2 的请求有何不同。 SetNextRequest 仅在定义它的请求之后执行,即使它是在 prerequest 中设置的。

标签: postman postman-collection-runner


【解决方案1】:
pm.info.iteration

给出当前的迭代次数(从 0 开始)

if (pm.info.iteration === 0) {

postman.setNextRequest(‘request name1’);

} else {

postman.setNextRequest(‘request name2’);

}

同样在 postman 中,你可以通过 pm 对象修改 postman 中的所有内容

所以你可以改变 pm.request.url

pm.request.body

等等

SetNextRequest 不会跳过当前请求,它会在当前请求完成后执行。

所以你可以做的是添加一个准备脚本并做

postman.setNextRequest(null)这将确保执行当前执行后没有下一个请求,将其添加到两个主请求中

并在准备请求中添加

postman.setNextRequest("country1")

Else 

postman.setNextRequest("country2")

请添加请求结构和集合结构,以便我们给出更正确的答案

【讨论】:

  • 现在通过 Pre req 中的以下内容解决了这个问题。 if("value" == pm.iterationData.get("fieldname")) { postman.setNextRequest("下一个请求"); } 谢谢。
  • 抱歉迭代从 0 开始,所以第一次迭代是 0,最后一次迭代是 n-1
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2020-11-11
  • 2019-04-28
  • 1970-01-01
  • 2022-06-16
  • 2017-12-06
  • 2020-03-03
相关资源
最近更新 更多