簡體   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