Saltar al contenido

Postman / Newman reintentar en caso de falla

Aurora, miembro de nuestro equipo de trabajo, nos ha hecho el favor de redactar este artículo ya que domina perfectamente este tema.

Solución:

Después de unas horas terminé con una función como esta:

function retryOnFailure(successCode, numberOfRetrys)  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);
    

Uso:

retryOnFailure(404, 4);

Puede configurar un flujo de trabajo de solicitud como este:

Cree una colección con una solicitud, luego:

En la pestaña de pre-solicitud puedes implementar un contador:

// Counter for number of requests
var counter = environment.counter ? _.parseInt(environment.counter) + 1 : 1;
postman.setEnvironmentVariable("counter", counter);

Su pestaña de pruebas se vería así:

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");

Se puede configurar un tiempo de espera para la solicitud en sí con la CLI de newman:

newman run myCollection.json --timeout-request Y

Comentarios y calificaciones

Si guardas alguna indecisión o disposición de aclarar nuestro división te evocamos ejecutar una nota y con mucho placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *