如果 key:value 存在,我想检查我的 JSON 响应数组。并且我想如果键:值被发现从循环出去,并得到测试结果。 你能支持我怎么做吗?
例如,我有以下回应:
[
{
"persID": "personID_1",
"vip": false,
"account": {
"contactName": "value1",
},
"premium": {
"Name": "value2",
"Director": "value3",
"company": "value7",
"homePage": "value6",
"address": {
"country": "value8",
"city": "value9"
},
"photo": value10
}
},
{
"persID": "personID_2",
"vip": false,
"account": {
"contactName": "value11",
},
"premium": {
"Name": "value12",
"Director": "value13",
"company": "value17",
"homePage": "value16",
"address": {
"country": "value18",
"city": "value19"
},
"photo": value110
}
},
.....
.....// dynamic response can be "n" elements!!!!
]
Run Code Online (Sandbox Code Playgroud)
我想检查这个数组中是否存在一个带有 ( "persID": "personID_3" ) 的键值。(例如对于 persID_3,如果结果失败,并且 persID_2 已通过)
我尝试了以下但没有结果:
var jsonArray = pm.response.json();
var persID = "persID_3";
pm.test("2. tets check if persdID exist in array", function () {
var i=0;
for(i; i<jsonArray.length;i++){
pm.expect(jsonArray).to.have.property(jsonArray[i].persID, persID);
// pm.expect(jsonArray[i]).to.have.property(jsonArray[i].persID, persID);
}
});
Run Code Online (Sandbox Code Playgroud)
也试过 var jsonArray = JSON.parse(responseBody); 和 pm.expect(jsonArray[i]).to.have.property(jsonArray[i].persID, persID);
但没有结果
感谢您的任何支持。
您可以使用Lodash遍历数组并检查响应中的值:
pm.test('Matches personID property value', () => {
_.each(pm.response.json(), (arrItem) => {
if (arrItem.persID === 'personID_2') {
throw new Error(`Array contains ${arrItem.persID}`)
}
})
});
Run Code Online (Sandbox Code Playgroud)
如果该personID_2属性存在,则测试应该失败,但该值可以是您喜欢的任何值。我使用了你的响应数据并创建了一个快速的 API 路由来向你展示这个工作。
我将值添加到错误消息中,以便它对测试输出更具描述性。
| 归档时间: |
|
| 查看次数: |
21114 次 |
| 最近记录: |