javascriptjqueryfunctionpostman

Unable to Add Value to a Function & Stop Request from executing (POSTMAN)


I'm pretty new to POSTMAN and also looking for other ways to write this function. Any additional ways is much appreciative.

Below is a 200 Status OK test in POSTMAN. If the status does not come back as 200 Status OK, I'd like to tally/count that failure as a value(+1). In a later request, an Else/if condition (below) will check how many failures are there. And if failures >0 then that will trigger a new request.

BUT If this test were to have a status(400) and not a 200, meaning it would fail how can I tell it to count that failure(+1) as a value?

pm.collectionVariables.set("failures", []);
let failures = pm.collectionVariables.get("failures")

pm.test("Status test", function () {
    pm.response.to.have.status(200);
});

Below is a pre-script request in POSTMAN. As I mentioned above, if there is a value greater than 0 for failures, then run a "New Request". If not, do nothing. I think I have this else/if statement correct. Just including it for your reference.

let failures = pm.collectionVariables.get("failures")
console.log(failures)
if (failures.length >0) {
    console.log('failures found')
    pm.sendRequest("New Request")
} else {
    console.log('NO failures')
    postman.setNextRequest(null);
    return null
}

(Screen shots - Unable to stop request from executing)

enter image description here

enter image description here

enter image description here


Solution

  • You can count the failures like this:

    let failures = pm.environment.get("failures");
    
    if (failures === undefined || failures === null){
        failures = 0;
        pm.environment.set("failures", failures);
    }
    
    pm.test("Status test", function () {
        if (pm.response.code !== 200){
            failures += 1;
            pm.environment.set("failures", failures)
        }
        pm.response.to.have.status(200);
    });
    

    Code to check would be:

    let failures = pm.environment.get("failures")
    
    if (failures > 0) {
        console.log('failures found')
        postman.setNextRequest("New Request")
    
        //you can reset failures if needed.
        pm.environment.set("failures", 0)
    
    } else {
        console.log('NO failures')
        postman.setNextRequest(null);
    }