基于arrayElement的响应进行JSON验证检查

时间:2019-05-10 04:04:22

标签: postman postman-testcase

我想从响应格式检查status = AVAILABLE,然后arrayElement应该以roomTypeId返回,否则roomTypeId不应该返回其他状态。

[
    {
        "status": "SOLDOUT",
        "propertyId": "dc00e77f",
        "Fee": 0,
        "isComp": false
    },
    {
        "roomTypeId": "c5730b9e",
        "status": "AVAILABLE",
        "propertyId": "dc00e77f",
        "price": {
            "baseAveragePrice": 104.71,
            "discountedAveragePrice": 86.33
        },
        "Fee": 37,
        "isComp": false
    },
    
]

[     {         “状态”:“售罄”,         “ propertyId”:“ 773000cc-468a-4d86-a38f-7ae78ecfa6aa”,         “ resortFee”:0,         “ isComp”:false     },     {         “ roomTypeId”:“ c5730b9e-78d1-4c1c-a429-06ae279e6d4d”,         “ status”:“ AVAILABLE”,         “ propertyId”:“ dc00e77f-d6bb-4dd7-a8ea-dc33ee9675ad”,         “价钱”: {             “ baseAveragePrice”:104.71,             “ discountedAveragePrice”:86.33         },         “ resortFee”:37,         “ isComp”:false     }

]

我试图从下面检查这一点;

pm.test("Verify if Status is SOLDOUT, roomTypeId and price information is not returned ", () => {
    var jsonData = pm.response.json();
    jsonData.forEach(function(arrayElement) {
      if (arrayElement.status == "SOLDOUT") 
              { 
                 pm.expect(arrayElement).to.not.include("roomTypeId");
              }
              else if (arrayElement.status == "AVAILABLE") 
              { 
                 pm.expect(arrayElement).to.include("roomTypeId");
              }
          });
});

1 个答案:

答案 0 :(得分:3)

您需要检查该属性是否存在。

使用have.property语法,您可以做到这一点。

您可以阅读Postman API reference docsPostman uses a fork of chai internally,因此ChaiJS docs should also help you.

更新的脚本:

pm.test("Verify if Status is SOLDOUT, roomTypeId and price information is not returned ", () => {
    var jsonData = pm.response.json();
    jsonData.forEach(function(arrayElement) {
        if (arrayElement.status === "SOLDOUT") {
            pm.expect(arrayElement).to.not.have.property("roomTypeId");
        } else if (arrayElement.status === "AVAILABLE") {
            pm.expect(arrayElement).to.have.property("roomTypeId");
        }
    });
});