setNextRequest(null)未停止postman集合中的迭代

setNextRequest(null)未停止postman集合中的迭代,postman,postman-collection-runner,Postman,Postman Collection Runner,注意:我正在为这个查询使用一个简单的测试API,希望它能更好地理解我的查询。API的URL为 我正在设置一个邮递员集合,只需要调用一个Post请求。在Postman脚本中,我仅为测试目的参数化了4个字段。我使用了一个csv文件作为两次迭代的测试数据,其中参数“run”用于告诉Postman是否应该执行迭代 run,id,name,username,email yes,11,Test One,testone,testone@test.com no,12,Test Two,testtwo,testt

注意:我正在为这个查询使用一个简单的测试API,希望它能更好地理解我的查询。API的URL为

我正在设置一个邮递员集合,只需要调用一个Post请求。在Postman脚本中,我仅为测试目的参数化了4个字段。我使用了一个csv文件作为两次迭代的测试数据,其中参数“run”用于告诉Postman是否应该执行迭代

run,id,name,username,email
yes,11,Test One,testone,testone@test.com
no,12,Test Two,testtwo,testtwo@test.com
我在网上搜索并看到命令postman.setNextRequest(null);作为停止迭代的命令。但是,当运行值为“否”时,迭代仍然运行API调用

我不确定这是否是正确的命令,我需要在Postman收集运行期间跳过迭代。如果没有,请问正确的命令是什么

谢谢

我在Prerequisite选项卡中添加了一个javascript代码,以获取“run”的参数值,并评估与迭代对应的API是否要执行

var run = pm.iterationData.get("run");
console.log("run = " + run);

if (run == "no") {
    console.log("Do NOT run iteration");
    postman.setNextRequest(0);
}
else {
    console.log("Run iteration");
}

console.log("Test Run!");
预期:将为迭代1执行Post API请求调用 因为run=yes,并且不会在迭代2上执行,因为run =否

实际:在迭代1和2上都调用了Post API请求。 另外,当我检查console.log时,字符串“testrun”是 都被记录了

postman.setNextRequest()
始终在 当前请求。这意味着如果你把这个函数放在其他函数之前 代码块在预请求或测试脚本中的任何位置,这些块将 仍然执行


有关更多详细信息,请参阅。

通过数据文件(json或csv)使用迭代功能时,应从预请求脚本中删除任何postman.setNextRequest()命令。 使用此命令将在无限循环中从第一个元素开始重新触发迭代。 删除此命令将使迭代正常运行,并按预期在每个单独的迭代中循环

run = yes
Run iteration
Test Run!
POST https://jsonplaceholder.typicode.com/users

run = no
Do NOT run iteration
Test Run!
POST https://jsonplaceholder.typicode.com/users