繁体   English   中英

如何检查一个值是否在 JSON 返回中?

[英]how do I check if a value is in a JSON return or not?

我正在 postman 中编写一个测试,我想检查 JSON 返回是否包含名为“RegressieMapTest”的 Label。 这是我的脚本:

pm.test("Is the folder created correctly?", function(){
var jsonData = pm.response.json();
var objString = JSON.stringify(jsonData);
var obj =  JSON.parse(objString);

for (var i = 0; i < obj.Corsa.Data.length; i++){
    if (obj.Corsa.Data[i].Label == "RegressieMapTest"){
        console.log(obj.Corsa.Data[i].Label);
        pm.expect(obj.Corsa.Data.Label).to.eql("RegressieMapTest");
    }
}
pm.expect.fail();   
})

但它不太好用,每次我运行这个脚本时,它似乎会自动跳转到 pm.expect.fail(),这很奇怪,因为“RegressieMapTest”在 JSON 返回内。 Postman 返回以下消息:

Is the folder created correctly? | AssertionError: expect.fail()

pm.respose.json() 等于 JSON.parse 你不必再做一次

你也可以使用 array.find 方法而不是循环遍历它

pm.test("Is the folder created correctly?", function () {
    var jsonData = pm.response.json();

    pm.expect(obj.Corsa.Data.find(elem => elem.Label === "RegressieMapTest")).to.be.not.undefined

}

如果数组有任何元素与 label RegressieMapTest 那么它将返回数据 elese 返回未定义,因此我们正在验证它不会返回未定义。 意味着它具有价值

你的pm.expect.fail(); 总是运行。 您希望它仅在找不到该字段时运行。 因此,只需在您的检查块中添加一个标志。

pm.test("Is the folder created correctly?", function(){
    var jsonData = pm.response.json();
    var objString = JSON.stringify(jsonData);
    var obj =  JSON.parse(objString);

    var isFound = false;
    for (var i = 0; i < obj.Corsa.Data.length; i++){
        if (obj.Corsa.Data[i].Label == "RegressieMapTest"){
            console.log(obj.Corsa.Data[i].Label);
            pm.expect(obj.Corsa.Data.Label).to.eql("RegressieMapTest");
            isFound = true;
        }
    }

    if (!isFound) {
        pm.expect.fail();
    }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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