[英]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.