使用 Postman 验证 JSON 模式

Validate JSON Schema using Postman

我正在尝试验证我的响应 JSON 模式,但我总是遇到失败的测试用例,

返回 JSON 响应是:

[
    {
        "registrationOriginDateTime": "2021-11-27T21:11:11.000Z",
        "eventId": "qc0081902",
        "badgeId": "12367",
        "customerGuid": "322245671253455",
        "products": [],
        "status": "registered",
        "demographics": []
    }
]

我正在使用以下方法验证架构,

var jsonSchema = {
"type": "array",
"items":{
type: "object",
properties:
{

        "registrationOriginDateTime": {"type":"string"},
        "eventId": {"type":"string"},
        "badgeId": {"type":"string"},
        "customerGuid": {"type":"string"},
        "products": {"type":"string"},
        "status": {"type":"string"},
        "demographics": {"type":"string"}

}
}
}

pm.test('Response schema type nodes verification', function() {
  pm.expect(tv4.validate(pm.response.json(), jsonSchema)).to.be.true;
});

然而它失败了。 有人可以帮我解决这个问题吗?

您的对象“产品”和“人口统计”的模式是数组类型,其中的项目是字符串,见下文:

//set Response Body variable
var jsonData = pm.response.json();

//set Response Schema variable 
var schema = {
  "type": "array",
  "items": {
    "type": "object",
    "required": [],
    "properties": {
      "registrationOriginDateTime": {"type": "string"},
      "eventId": {"type": "string"},
      "badgeId": {"type": "string"},
      "customerGuid": {"type": "string"},
      "products": {"type": "array",
        "items": {"type": "string"}
      },
      "status": {"type": "string"},
      "demographics": {"type": "array",
        "items": {"type": "string"}
      }
    }
  }
};

//validate Response Schema against Response Body
pm.test('Response schema type nodes verification', function() {
  pm.expect(tv4.validate(jsonData, JSON.parse(schema), false, true), tv4.error).to.be.true;
});

为了使测试更清晰,我将模式 a 作为值保存到具有键 responseSchema 的全局变量,因此 var 模式声明如下所示:

var schema = pm.globals.get("responseSchema");