的情况下,在纽曼我想测试,以确保响应代码是正确的重试,响应时间是合理的,并且响应值是否正确。邮差/纽曼失败
在某些情况下,由于网络打嗝或一些其他系统的条件下,一些请求可能最终超时,或者如果相同的请求,后来处理了几秒钟,这将解决不正确的值。
在这种情况下我想与请求之间的ý超时重试相同的请求的x倍。
如果迭代传递重试后,我想纽曼退出代码为0(成功运行)。
的情况下,在纽曼我想测试,以确保响应代码是正确的重试,响应时间是合理的,并且响应值是否正确。邮差/纽曼失败
在某些情况下,由于网络打嗝或一些其他系统的条件下,一些请求可能最终超时,或者如果相同的请求,后来处理了几秒钟,这将解决不正确的值。
在这种情况下我想与请求之间的ý超时重试相同的请求的x倍。
如果迭代传递重试后,我想纽曼退出代码为0(成功运行)。
几个小时后,我曾与这样的函数已结束:
function retryOnFailure(successCode, numberOfRetrys) {
var key = request.name + '_counter';
var execCounter = postman.getEnvironmentVariable(key) || 1;
var sleepDuration = 1000;
var waitUntilTime = new Date().getTime() + sleepDuration;
if (responseCode.code !== successCode && execCounter <= numberOfRetrys) {
while (new Date().getTime() < waitUntilTime) {
// Do Nothing -> Wait
}
console.log('Retrying: ' + request.name + '\nGot: ' + responseCode.code + ' Expected: ' + successCode + '\nWaited: ' + sleepDuration/1000 + 'sec \nRetry Number: ' + execCounter + ' of ' + numberOfRetrys);
execCounter++;
postman.setEnvironmentVariable(key, execCounter);
postman.setNextRequest(request.name);
}
}
用法:
retryOnFailure(404, 4);
您可以设置这样的请求,工作流程:
一个请求,然后创建一个集合:
在预先请求选项卡,你可以实现一个计数器:
// Counter for number of requests
var counter = environment.counter ? _.parseInt(environment.counter) + 1 : 1;
postman.setEnvironmentVariable("counter", counter);
你测试选项卡将如下所示:
const code = (responseCode.code === 200);
if (code === 200 && environment.counter < X) {
// Stop execution
tests["Status code is 200"] = code;
postman.setNextRequest();
}
else {
// retry the same request
postman.setNextRequest("Name of this request");
}
请求超时吨本身可以与纽曼CLI配置:
newman run myCollection.json --timeout-request Y
耶,可重复使用的功能是这可能是更好的解决方案。这是艰难的工作来获取与邮差/纽曼一些优雅的重试逻辑。我希望很快实现可重复使用的全球脚本。 –