作为初学者,我有几个问题。我正在使用Get请求,该请求将在下面填充json。
{
"total": 12,
"total_pages": 4,
"data": [{
"id": 1,
"first_name": "George",
"last_name": "Bluth",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
}]
}
对于以下两个测试,而第一个测试通过第二个测试失败,并显示以下消息:
AssertionError: expected false to be truthy
//Verify Page number total is 12
var jsonData = JSON.parse(responseBody);
tests["Checking total page number-Manual"] = jsonData.total === 12;
//verify is exists and is 1
var jsonData = JSON.parse(responseBody);
tests["Checking ID exists and is 1"] = jsonData.id === 1;
问题1: 我发现的github帖子说可能存在错误,建议使用 而是新的pm。*等价物。但是,我看不出第一和第二之间的任何区别。那么第二项测试为什么失败?
问题2: 是否可以编写测试以验证ID:1的名字是George?
提前感谢您的时间。
答案 0 :(得分:1)
第二次测试失败的原因是因为数据是一个数组,在这种情况下,您必须访问第一个元素。您可能想要执行以下操作(新语法):
pm.test("Verify id is equal to 1", function() {
var jsonData = pm.response.json();
pm.expect(jsonData.data[0].id).to.equal(1);
});
乔治(George)同样是测试名字的人
pm.test("Verify id is equal to 1", function() {
var jsonData = pm.response.json();
pm.expect(jsonData.data[0].first_name).to.equal("George");
});
如果您始终希望它只是数组中的单个元素,那么可以安全地使用索引0,即data [0]。但是,如果您希望数据数组中有更多元素,则必须遍历它们以查找正确的元素。
这里是API的很好参考:
https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference/