有没有办法在Postman测试中检查JSON响应的结构?

时间:2019-04-12 21:05:31

标签: automated-tests postman

根据Windows桌面上Postman GUI中给出的示例代码片段,我用Postman编写了一些测试。

主要是,我想检查响应中是否存在参数(正是在这种情况下,我需要检查参数的特定值),我想知道是否有比这更好的方法了我现在一直在做。

以下测试显示了一个这样的示例,这只是其中的一小部分。实际的响应模式要大得多,因此我设想每个API端点编写50-60行这样的检查。

pm.test("Det details of a POI", function () {
    pm.expect(jsonData.code).to.eql(0);
    pm.expect(jsonData.data[0].provider).to.eql("google");
    pm.expect(jsonData.data[0]).to.have.property("id");
    pm.expect(jsonData.data[0].location).to.have.property("position");
    pm.expect(jsonData.data[0].location.address).to.have.property("text");
    pm.expect(jsonData.data[0].location.address).to.have.property("house");
    pm.expect(jsonData.data[0].location.address).to.have.property("street");
    pm.expect(jsonData.data[0].location.address).to.have.property("postalCode");
    pm.expect(jsonData.data[0].location.address).to.have.property("city");
    pm.expect(jsonData.data[0].location.address).to.have.property("county");
    pm.expect(jsonData.data[0].location.address).to.have.property("state");
    pm.expect(jsonData.data[0].location.address.country).to.eql("United Kingdom");
    pm.expect(jsonData.data[0].location.address).to.have.property("countryCode");
    pm.expect(jsonData.data[0].contacts).to.have.property("phone");
    pm.expect(jsonData.data[0].contacts.website.value).to.include("www.google.com");
    pm.expect(jsonData.data[0].contacts.website).to.have.property("label");
    pm.expect(jsonData.data[0].categories[0]).to.have.property("id");
    pm.expect(jsonData.data[0].categories[0]).to.have.property("title");
    pm.expect(jsonData.data[0].categories[0]).to.have.property("type");
    pm.expect(jsonData.data[0].categories[0]).to.have.property("system");
)};

任何提示和改进将不胜感激。

1 个答案:

答案 0 :(得分:0)

您基本上是在问与以下两个Stack Overflow帖子相同的内容:

答案:Postman中内置了一个json格式验证,它使用Tiny Validator项目来允许在请求后测试脚本中进行模式验证。研究邮递员的文档(12)中提供了有关用法的示例。