使用POSTMAN检查日期等于昨天的日期

时间:2018-12-05 15:54:33

标签: json testing automation postman

我正在使用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'

有人可以帮忙吗?

1 个答案:

答案 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模块,看看其中是否有可用于您的用例的东西。