Noo*_*han 1 javascript testing qa functional-testing postman
假设 API 请求获取用户 ID、电子邮件地址和生日。示例 API 请求如下:
GET: /v1/users HTTP/1.1
Content-Type: application/json
Authorization: bearer {access_token}
Run Code Online (Sandbox Code Playgroud)
对于上述请求,响应如下:
{
"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
}
Run Code Online (Sandbox Code Playgroud)
现在,邮递员将进行什么测试以确保生日节点下的所有返回值都大于 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);
}
});
Run Code Online (Sandbox Code Playgroud)
但是邮递员说:“检查生日大于 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);
}
});
Run Code Online (Sandbox Code Playgroud)
这将解决您的问题。
| 归档时间: |
|
| 查看次数: |
9392 次 |
| 最近记录: |