如何在邮递员测试中将字符串与日期进行比较?
How to compare a string to a date in postman test?
假设 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
}
现在,邮递员将进行什么测试以确保生日节点下的所有返回值都大于 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’是数字或日期”。
所以首先需要将日期转换为JS接受的格式,并使用Date构造函数生成完整的日期。
接下来pm中的'above'函数接受整数,所以不会比较日期格式。
要解决此问题,我们可以使用 .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).getTime(); // Converting to integer from date format
pm.expect(isoFormatDate).to.be.above(a);
}
});
假设 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
}
现在,邮递员将进行什么测试以确保生日节点下的所有返回值都大于 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’是数字或日期”。
所以首先需要将日期转换为JS接受的格式,并使用Date构造函数生成完整的日期。
接下来pm中的'above'函数接受整数,所以不会比较日期格式。 要解决此问题,我们可以使用 .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).getTime(); // Converting to integer from date format
pm.expect(isoFormatDate).to.be.above(a);
}
});