简体   繁体   中英

In postman tests, how can i assert the response values with one of multiple values when the input parameter can be empty?

I have an input parameter called IsFruit which can be either 0 or 1. If the value is 0, the response should return fruits with FruitsYN value as N. Similarly if value is 1, FruitsYN should be Y. If this parameter has no values, response can have FruitsYN Y or N. This is the code that i wrote but while some cases are a pass, others are failing. I printed IsFruit when the value is empty in the input. It looks like ∅

var requestData = JSON.parse(request.data);
var responseData = JSON.parse(responseBody);
var IsFruit=requestData.IsFruit;// IsFruit can be either 0,1 or empty
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
    pm.test("Check if Fruits found with this search criteria", function() {
        pm.expect(responseData.Message).to.not.eql("No Fruits found with this search criteria");

        var list = (responseData.Fruits).length;
        //console.log(list);
        var a = [];
        
        for (var i = 0; i < list; i++) {
            var counter = responseData.Fruits[i];
            FruitsYN = counter.FruitsYN
            //console.log(FruitsYN);
            a.push(FruitsYN)
            pm.test("Check whether Fruit values in the Fruits returned is accurate based on fruit filter in the request", function() {

                if (IsFruit == 0) {

                    pm.expect(FruitsYN).to.eql("N")

                }
                if (IsFruit == 1) {
                    pm.expect(FruitsYN).to.eql("Y")
                }

                if (IsFruit =="") {
                    pm.expect(FruitsYN).to.be.oneOf(["Y", "N"]);
                }
            });
        }
    });
});

Looks like variable names starting with upper case characters are not working in Postman.

Below code is working for me:

let requestData = {"IsFruit":""};
let isFruit=requestData.IsFruit;// IsFruit can be either 0,1 or empty

if (isFruit =="") {
    console.log("Empty string");
}

Whereas it is not working if I use IsFruit

I fixed it. :). i just added a new if condition. Apparently the issue was because of the null value. So i handled it like this if (isFruit == "") { isFruit = "empty" Then i just used this later in the condition check if (isFruit == "empty") { pm.expect(FruitYN).to.be.oneOf(["Y", "N"]); } if (isFruit == "empty") { pm.expect(FruitYN).to.be.oneOf(["Y", "N"]); }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM