如何将JSON响应与Postman进行比较

时间:2019-05-06 02:07:47

标签: postman json-value

我有一个方案来验证数组中的“状态”值。响应是动态的,并且#次迭代可能会有所不同。我不想在邮递员环境中保存此值,但需要进行动态检查。从下面的API响应中,我得到了2个实例,第一个实例具有AVAILABLE,第二个实例具有SOLDOUT。有人可以建议我如何进行比较吗?

响应API:

[
    {
        "status": "AVAILABLE",
        "price": {
            "baseAveragePrice": 209,
            "discountedAveragePrice": 209
        },
        "Fee": 39,
        "flag": false
    },
    {
        "status": "SOLDOUT",
        "price": {
            "baseAveragePrice": 209,
            "discountedAveragePrice": 209
        },
        "Fee": 39,
        "flag": true
    },
]

pm.test("status Check", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.status).to.be.oneOf(["AVAILABLE", "SOLDOUT", "NOTRELEASED"]);
});

2 个答案:

答案 0 :(得分:1)

如果您尝试检查响应中的所有status值,则可以像这样遍历它们:

pm.test("status Check", function () {
    var jsonData = pm.response.json();
    _.each(jsonData, (arrItem) => {            
        pm.expect(arrItem.status).to.be.oneOf(["AVAILABLE", "SOLDOUT", "NOTRELEASED"]);
    })
});

答案 1 :(得分:1)

您的代码段实际上只适用于一个元素。 您当前的响应是一个JSON数组。因此,您需要遍历整个数组的检查。

一个解决方案:

df_desired = pd.DataFrame(['2008-10-2404:12:15', 'L',
                        '2008-10-2404:12:30', 'r',
                        '2008-10-2404:12:35', 'r',
                        '2008-10-2404:12:40', 'r',
                        '2008-10-2404:12:45', 'S',
                        '2008-10-2404:12:50', 'S',
                        '2008-10-2404:13:00', 'L',
                        '2008-10-2404:13:15', 'L'])

这将返回一个单独的“状态检查”测试,如果所有状态都正常,则单击“确定”,如果其中一个失败,则返回FAILED。

one single test

如果您想在测试结果中查看更多详细信息,我建议将其中每个添加到一个嵌套测试中。使用此解决方案,您将有3个测试。一项常规测试“状态检查”,以及一项针对每个Array项目的测试(在本例中为2):

pm.test("status Check", function() {
    var jsonData = pm.response.json();

    jsonData.forEach(function(arrayElement) {
        pm.expect(arrayElement.status).to.be.oneOf(["AVAILABLE", "SOLDOUT", "NOTRELEASED"]);
    });

});

one test per array-item