使用javascript和Postman计算JSON数组中的记录
我有一个返回2条记录的控件:使用javascript和Postman计算JSON数组中的记录,javascript,json,postman,Javascript,Json,Postman,我有一个返回2条记录的控件: { "value": [ { "ID": 5, "Pupil": 1900031265, "Offer": false, }, { "ID": 8, "Pupil": 1900035302, "Offer": false, "OfferDetail": "" } ] } 我需要通过邮递员测试,我有2条记录返回。我尝试过在这里和其他地方找到的各
{
"value": [
{
"ID": 5,
"Pupil": 1900031265,
"Offer": false,
},
{
"ID": 8,
"Pupil": 1900035302,
"Offer": false,
"OfferDetail": ""
}
]
}
我需要通过邮递员测试,我有2条记录返回。我尝试过在这里和其他地方找到的各种方法,但都不走运。使用下面的代码无法返回预期的答案
responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = list === undefined || list.length === 2;
在这一点上,我不确定是我正在测试的API出了问题,还是我的编码出了问题——我尝试过循环返回的项目,但这对我也不起作用。有人能给我一些建议吗?我是javascript新手,所以我希望我的问题有一个明显的原因,但我没有看到。非常感谢 您的响应主体是一个对象,您无法找到对象的长度,请重试
var list = responseJson.value.length;
如评论中所述,您应该测试
responseJson.value.length
responseJson=JSON.parse(responseboody);
测试[“预期数量”]=typeof responseJson===“未定义”| | responseJson.value.length;
更正json。试试这个
============================v
var test = JSON.parse('{"value": [{"ID": 5,"Pupil": 1900031265,"Offer": false},{"ID": 8,"Pupil": 1900035302,"Offer": false,"OfferDetail": ""}] }')
test.value.length; // 2
因此,您需要识别json中的数组(从
[
括号开始。然后取下键,然后在postman中的测试部分下检查键的长度,执行以下操作(下面的屏幕截图):
var body=JSON.parse(responseBody);
测试[“计数:+body.value.length]=真;
以下是您应该看到的(注意:我用JSON替换了responseBody
,以模拟上面的示例):
我有一个类似的问题,我用来测试一定数量的数组成员的是:
responseJson = JSON.parse(responseBody);
tests["Response Body = []"] = responseJson.length === valueYouAreCheckingFor;
要检查您得到的值,请打印它并检查邮递员控制台
console.log(responseJson.length);
在验证JSON中数组的长度时,我遇到了类似的问题-
responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = responseJson.value.length === list;
工作代码
pm.test("Verify the number of records",function()
{
var response = JSON.parse(responseBody);
pm.expect(Object.keys(response.value).length).to.eql(5);
});
//Please change the value in to.eql function as per your requirement
//'value' is the JSON notation name for this example and can change as per your JSON
这就是我计算记录时所做的
//parsing the Response body to a variable
responseJson = JSON.parse(responseBody);
//Finding the length of the Response Array
var list = responseJson.length;
console.log(list);
tests["Validate service retuns 70 records"] = list === 70;
首先,您应该将响应转换为json并找到值路径。值为数组。您应该调用length函数来获取其中的对象数量,并检查您的预期大小
pm.test("Validate value count", function () {
pm.expect(pm.response.json().value.length).to.eq(2);
});
以下是我找到答案的最简单方法:
pm.expect(Object.keys(pm.response.json()).length).to.eql(18);
无需对变量进行任何自定义。只需将“18”复制、粘贴并调整为所需的数字即可。一个数组中仅断言2个对象的更新版本:
pm.test("Only 2 objects in array", function (){
pm.expect(pm.response.json().length).to.eql(2);
});
responseJson
是一个对象,读取键value
,然后length
您的json数组的长度为1个名为“value”的对象,而不是您的“value”对象的长度应为2。请改为检查responseJson.value
length。我将其添加到一个大响应中,它永远不会返回,只会持续加载数小时。@conniedcinko我已经对大数据执行了此操作,此代码适用于我var body=JSON.parse(responseBody);测试[“Count:”+body.length]=真的;
非常好,谢谢!它工作得最好!我得到:AssertionError:预期3将完全相等10@liquide这可能仅仅意味着你的测试正确地失败了,但并不意味着测试是错误的。