在poster测试中,当输入参数可以为空时,如何使用多个值中的一个来断言响应值



我有一个名为IsFruit的输入参数,它可以是0或1。如果值为0,则响应应返回FruitsYN值为N的水果。类似地,如果值为1,则FruitsYN应为Y。如果此参数没有值,则响应可以为FruitsSYN Y或N。这是我编写的代码,但有些情况是通过的,其他情况则失败。当输入中的值为空时,我打印了IsFruit。看起来像∅

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

看起来以大写字符开头的变量名在Postman中不起作用。

以下代码对我有效:

let requestData = {"IsFruit":""};
let isFruit=requestData.IsFruit;// IsFruit can be either 0,1 or empty
if (isFruit =="") {
console.log("Empty string");
}

然而,如果我使用IsFruit,它就不起作用

我修复了它。:(。我刚刚添加了一个新的if条件。显然,这个问题是因为null值。所以我就这样处理if (isFruit == "") { isFruit = "empty"然后我只是在稍后的条件检查中使用了这个if (isFruit == "empty") { pm.expect(FruitYN).to.be.oneOf(["Y", "N"]); }

最新更新