Javascript 邮递员重试逻辑进入无限循环

Javascript 邮递员重试逻辑进入无限循环,javascript,postman,Javascript,Postman,我正在使用postman测试我的API 其中一个API需要一些时间来处理数据,我添加了一个重试逻辑,尝试3次以检查端点是否工作正常 retryCount的初始值为3,在执行重试的测试之前的几个测试中设置 代码如下: let retryCount = pm.environment.get('retryCount'); let responseData = pm.response.json(); console.log(responseData.data.events.length); consol

我正在使用postman测试我的API

其中一个API需要一些时间来处理数据,我添加了一个重试逻辑,尝试3次以检查端点是否工作正常

retryCount
的初始值为3,在执行重试的测试之前的几个测试中设置

代码如下:

let retryCount = pm.environment.get('retryCount');
let responseData = pm.response.json();
console.log(responseData.data.events.length);
console.log(retryCount);
if(responseData.data.events.length == 0 && retryCount > 0)
{
    retryCount = retryCount - 1;
    console.log(retryCount);
    pm.environment.set('retryCount',retryCount);
    postman.setNextRequest("GetEvents");
}
else
{
    pm.environment.set('data-response',responseData.data);
}
重试3次后,应停止。然而,它进入无限循环。这个问题的出现是因为变量总是3,当下一次调用发生时,它应该减少1,最终变成0


上面的代码处于无限状态的原因可能是什么。

您可能正在重置集合脚本中的某些where或集合中的某些where elese的值。创建一个新变量并尝试,使用以下方法:

pm.variables.get("retryCounter")===undefined ? pm.variables.set('retryCounter',3):null

let responseData = pm.response.json();
console.log(responseData.data.events.length);

retryCount = pm.variables.get("retryCounter");
console.log(retryCount);
if(responseData.data.events.length === 0 && retryCount > 0)
{
    retryCount = retryCount - 1;
    console.log(retryCount);
    pm.variables.set('retryCounter',retryCount)
    //this gives this request name , you don't have to hardcode
    postman.setNextRequest(pm.info.requestName);
}
else
{
    pm.environment.set('data-response',responseData.data);
}
试试这段代码,这里我们使用pm.variables.set创建局部变量。由于局部变量的生存时间是整个集合运行的时间,之后它将被销毁,因此对于每个新的集合运行,该值都将是未定义的


如果值未定义,则将其设置为3。然后发送请求,直到值变为小于1。

是否在if条件内?“GetEvents”与脚本所在的请求相同?是GetEvents与脚本所在的请求相同。它位于if条件内console.log是什么(重试打印?打印是否正确?3、2、1等?是否在某个位置重置该值?在同一请求或收集脚本中?感谢您的回答。确实是在某个位置重置了该值,现在它工作正常了谢谢,很高兴它工作正常。)