假设API请求提取用户ID,电子邮件地址和生日。以下示例API请求:
GET: /v1/users HTTP/1.1
Content-Type: application/json
Authorization: bearer {access_token}
对于上述请求,以下是响应:
{
"content": [
{
"id": 1,
"email": "random@random.com",
"birthday": "1990-01-01"
},
{
"id": 40,
"email": "random1@random1.com",
"birthday": "1990-18-10"
}
],
"last": false,
"total_elements": 2,
"total_pages": 1,
"sort": null,
"first": true,
"number_of_elements": 2,
"size": 20,
"number": 0
}
现在,postman中的测试将确保生日节点下的所有返回值都大于1988-18-01?
我尝试了以下内容:
pm.test("Check birthday greater than 1988-18-01", () => {
for (i = 0; i < jsonData.content.length; i++) {
var a = '1988-18-01';
pm.expect(jsonData.content[i].birthday).to.be.above(a);
}
});
但邮递员说:“检查生日大于1988-18-01 | AssertionError:预期'1990-01-01'是一个数字或日期”。
任何帮助都将受到高度赞赏!
答案 0 :(得分:3)
首先,日期需要转换为JS接受的格式,并使用Date构造函数生成完整的日期。
接下来,&#39;以上&#39; pm 中的函数接受一个整数,因此不会比较日期格式。 要解决此问题,我们可以使用 .getTime()函数将日期转换为整数格式。
最后,在for循环中声明变量并不是一个好习惯。 以下是您可以用以下内容替换测试的内容:
pm.test("Check birthday greater than 1988-18-01", () => {
let date,
isoFormatDate,
a = new Date('1988-01-18').getTime();
for (i = 0; i < jsonData.content.length; i++) {
date = jsonData.content[i].birthday;
isoFormatDate = new Date(Date.parse(date)).getTime(); // Converting to integer from date format
pm.expect(isoFormatDate).to.be.above(a);
}
});
这将解决您的问题。