的情況下,在紐曼我想測試,以確保響應代碼是正確的重試,響應時間是合理的,並且響應值是否正確。郵差/紐曼失敗
在某些情況下,由於網絡打嗝或一些其他系統的條件下,一些請求可能最終超時,或者如果相同的請求,後來處理了幾秒鐘,這將解決不正確的值。
在這種情況下我想與請求之間的ý超時重試相同的請求的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
耶,可重複使用的功能是這可能是更好的解決方案。這是艱難的工作來獲取與郵差/紐曼一些優雅的重試邏輯。我希望很快實現可重複使用的全球腳本。 –