Javascript 如何在Postman中遍历每个JSON键值对
我通过发送以下格式的JSON正文数据,在POSTMAN中针对POST API请求编写测试:Javascript 如何在Postman中遍历每个JSON键值对,javascript,json,postman,postman-testcase,Javascript,Json,Postman,Postman Testcase,我通过发送以下格式的JSON正文数据,在POSTMAN中针对POST API请求编写测试: "data": { "name": "Amber Joseph", "dob": "1988-10-13", "addressLine1": "Ap #770-9459 Quis Av.", "state": "WA", "suburb": "Beverley", "yesNo": false, "balance": 4
"data": {
"name": "Amber Joseph",
"dob": "1988-10-13",
"addressLine1": "Ap #770-9459 Quis Av.",
"state": "WA",
"suburb": "Beverley",
"yesNo": false,
"balance": 423.00,
"club": [
"Dance",
"Sports"
],
"activities" : null
"libraryCard": {
"uid": "2d07d77c-8756-43d4-912f-238a2ff567fe"
}
}
我收到了类似格式的请求响应,并添加了一些详细信息:
{
"status": "Success",
"message": "Created new 'Student' record",
"correlationCode": "Z848640-261354",
"type": {
"id": 51247,
"name": "Student",
"slug": "student",
"application": {
"name": "Willow University"
}
},
"data": {
"name": "Amber Joseph",
"dob": "1988-10-13",
"addressLine1": "Ap #770-9459 Quis Av.",
"state": "WA",
"suburb": "Beverley",
"yesNo": false,
"balance": 423.00,
"club": [
"Dance",
"Sports"
],
"libraryCard": {
"uid": "2d07d77c-8756-43d4-912f-238a2ff567fe",
"name": "11206"
}
}
现在我想在这里实现两件事:
1.验证响应正文中的每个键不具有空值。请注意,我正在发送一个值为null的键,它没有返回响应。
2.每个键在请求体中发送的值是响应体中相同键返回的值。例如,如果“name”键的值为“Amber-Joseph”,那么响应键“name”也会返回“Amber-Joseph”。但我想为每一把钥匙做这个。此外,键可以推迟每次,例如,我可能会或可能不会发送它与“名称”键,因此我需要一个通用的解决方案,适用于任何键值对我发送
我可以通过以下方式循环:
let jsonData = pm.response.json();
let dKey = Object.keys(jsonData);
let dValue = Object.values(jsonData);
for(var i = 0; i < dV.length; i++ ){
pm.expect(dV[i]).to.not.eql(null);
}
让jsonData=pm.response.json();
设dKey=Object.keys(jsonData);
让dValue=Object.values(jsonData);
对于(变量i=0;i
但这并不单独检查嵌套的键值对。我特别想检查“data”对象中的每个键值对。任何帮助都将不胜感激
谢谢您可以像这样从请求中获取JSON数据:
constrequestjson=JSON.parse(pm.request.body.raw);
(这假设您在《邮递员》中使用的是原始尸体。)
然后,您可以将响应的数据
字段与原始请求的数据
字段进行比较:
constrequestjson=JSON.parse(pm.request.body.raw);
const responseJson=pm.response.json();
for(Object.entries(requestJson.data))的常量[reqKey,reqValue]{
expect(responseJson.data[reqKey])到.eql(requestJson.data[reqKey]);
}
从那里,您可以在响应的其余部分添加您想要执行的任何检查。我不太明白responseJson.data[reqKey]是什么。我试图记录它的值,但似乎什么都没有得到。另外,我觉得它并没有从请求体获取所有的键值对,并对照响应键检查它们。您能详细说明您的答案吗?@MuznaZafar请尝试
console.log(pm.request.body.raw)
,并让我知道它显示了什么。这就是显示的内容:code
{↵ “数据”:{↵ ↵ “姓名”:“Amber Joseph”,↵ “dob”:“1988-10-13”,↵ “地址线1”:“Ap#770-9459 Quis Av.”,↵ “州”:“佤邦”,↵ “郊区”:“贝弗利”,↵ “yesNo”:错,↵ “余额”:423.00,↵ “俱乐部”:[↵ “跳舞”,↵ “体育”↵ ]↵ }↵ } code
@MuznaZafar哎呀,我有一个打字错误(resposeJson
应该是responseJson
)。我用修复程序更新了我的答案。你能再试一次吗?我已经找出了错误并更正了它,它仍然对我不起作用:(