Fazendo Retentiva (Retry ou setNextRequest) no Postman.
Neste exemplo vamos fazer o Retry, ou seja tentar novamente uma requisição que falhou, usando o Postman, no caso precisamos definir o valor Mínimo e o Valor Máximo no “Pre-request Script“ no Postman, caso não exista as variáveis.
var test = pm.environment.get("minRetries");
if(!test) {
pm.environment.set("minRetries", 0); pm.environment.set("maxRetries", 3);
}
Para não ter que fazer o Retry em uma requisição de sucesso, temos que adicionar uma condição de error, na condição abaixo somente é executada se houver um error na requisição, o valor ele é especifico pode ser que o caminho ou a forma de fazer seja diferente, fique atento a isso:
jsonObject.Error.Number != ""
Poderia ser uma outra condição como o status code igual a 500:
pm.expect(pm.response.code).to.equal(500);
O comando que vai realizar o retry no postman:
postman.setNextRequest(pm.info.requestName);
Por fim nosso teste ficou assim:
const response = pm.response.json();if (response.Error.Number != "") {
if(environment.minRetries >= environment.maxRetries) {
postman.setNextRequest(null);
pm.environment.set("minRetries", 0);
} else {
postman.setNextRequest(pm.info.requestName);
console.log("Retries " + environment.minRetries);
// caso nao der certo ele vai incrementar mais uma tentativa.
pm.environment.set("minRetries", ++environment.minRetries);
}
}
O comando abaixo vai parar as tentativas após 3 vezes:
postman.setNextRequest(null);
Com comparação do status code:
if (pm.response.code !==200 ) { if(environment.minRetries >= environment.maxRetries) { postman.setNextRequest(null); pm.environment.set("minRetries", 0);} else{ postman.setNextRequest(pm.info.requestName); console.log("Retries " + environment.minRetries); // caso nao der certo ele vai incrementar mais uma tentativa. pm.environment.set("minRetries", ++environment.minRetries);}}
Usando o includes:
if(pm.response.text().includes("<Number>203</Number>")){if(environment.minRetries >= environment.maxRetries) {postman.setNextRequest(null);pm.environment.set("minRetries", 0);} else{postman.setNextRequest(pm.info.requestName);console.log("Retries " + environment.minRetries);// caso nao der certo ele vai incrementar mais uma tentativa.pm.environment.set("minRetries", ++environment.minRetries);}}
Essa função vai ser muito útil quando você tem um erro por dados duplicados, vai refazer a tentativa usando dados novos.
Bom espero que gostem, ou ajude alguém que precisa…