我正在使用POSTMAN运行GET请求,并且JSON响应如下:
{
"Version": "1.0.524.0",
"BuildName": "Live",
"BuildDate": "04/12/2018 18:58:50.85 \r\n"
}
构建日期每天递增一,我想编写一个脚本来检查日期是否已递增,如果还没有,则其测试失败。目前我有这个:
pm.test("Check Build Date", function (CheckDate) {
pm.expect(pm.response.text()).to.include("04/12/2018 18:58:50.85");
});
但是我知道如果我明天运行此脚本将无法运行,并且会出现以下错误:
FAIL Check Build Date | AssertionError: expected '{"Version":"1.0.524.0","BuildName":"Live","BuildDate":"05/12/2018 18:58:50.85 \\r\\n"}' to include '04/12/2018 18:58:50.85'
有人可以帮忙吗?
答案 0 :(得分:0)
如果响应主体是一个对象(如您的问题中的对象),则可以使用pm.response.json().BuildDate
并检查其是否等于该值。
pm.test("Check Build Date", () => {
pm.expect(pm.response.json().BuildDate).to.equal("04/12/2018 18:58:50.85 \r\n");
});
不知道为什么在响应中将这些\r\n
值放在字符串中,对我来说,它们似乎在错误的位置。
要知道日期已增加1,则需要存储上次运行的状态并进行检查。您可以将其设置为environment
变量。
发送初始请求以获取并设置BuildDate
。现在,您将具有在Check
请求中使用的值。
pm.environemnt.set('lastBuildDate', pm.response.json().BuildDate)
在检查请求中,您可以输入以下内容:
const moment = require('moment')
let dateDiff = moment(pm.reponse.json().BuildDate).isAfter(pm.environment.get('lastBuildDate'))
pm.test("Check Build Date", () => {
pm.expect(dateDiff).to.be.true
})
如果您只想要检查BuildDate
是否在发出请求之后的时间,则可以使用以下方法:
const moment = require('moment')
let dateNow = moment().format("DD/MM/YYYY hh:mm:ss.SS")
let dateDiff = moment(pm.response.json().BuildDate).isAfter(dateNow)
pm.test("Check Build Date", () => {
pm.expect(dateDiff).to.be.true
})
这显然不是您想要执行的操作,但是我建议您看一下momentjs模块,看看其中是否有可用于您的用例的东西。