我正在使用返回以下数据的GET请求测试API:
{
"Verified": true,
"VerifiedDate": 2018-10-08
}
我正在尝试测试第一个字段是否返回真,而第二个字段具有值。我有以下代码:
pm.test("Verified should be true", function () {
var Status = pm.response.json();
pm.expect(Status.Verified).to.be.true;
});
pm.test("Returns a verified date", function () {
var Status = pm.response.json();
pm.expect(Status.VerifiedDate).to.not.eql(null);
});
关于true的断言由于以下原因而失败:
已验证应为真| AssertionError:期望未定义为真
为什么第一个测试失败?
我正在对post命令运行相同的测试,而没有任何问题。
有什么想法吗?
谢谢
答案 0 :(得分:2)
根本原因: 您的结果是一个数组,但是您的测试正在验证一个对象。因此,邮递员将抛出异常,因为它无法比较。
解决方案: 使用if else命令精确比较列表中某项的值。
var arr = pm.response.json();
console.log(arr.length)
for (var i = 0; i < arr.length; i++)
{
if(arr[i].Verified === true){
pm.test("Verified should be true", function () {
pm.expect(arr[i].Verified).to.be.true;
});
}
if(arr[i].Verified === false){
pm.test("Verified should be false", function () {
pm.expect(arr[i].Verified).to.be.false;
});
}
}
希望它能对您有所帮助。
答案 1 :(得分:1)
您也可以这样做:
pm.test('Check the response body properties', () => {
_.each(pm.response.json(), (item) => {
pm.expect(item.Verified).to.be.true
pm.expect(item.VerifiedDate).to.be.a('string').and.match(/^\d{4}-\d{2}-\d{2}$/)
})
})
该检查将为您做一些事情,它将遍历整个数组并检查Verified
属性是否为true
,并检查VerifiedDate
是否为字符串,并且匹配YYYY-MM-DD
格式,就像您的问题中给出的示例一样。