我们如何在jmeter中验证响应数据模式(仅列值)?

时间:2017-03-09 10:14:59

标签: api jmeter assertion

我需要在jmeter中验证API模式。 我的API响应数据是

[{
    "snid": "1",
    "subject": "Automation",
    "state": null,
    "country": null,
    "contact_name": "John",
    "email": "John@gmail.com",
    "phone": "402-221-9999"
}, {
    "snid": "2",
    "subject": "Testing",
    "state": null,
    "country": null,
    "contact_name": "Smith",
    "email": "jmstauch@leoadaly.com",
    "phone": "402-111-2222"
}]

所以我想验证它是否包含响应消息

{
    "snid": "",
    "subject": "",
    "state": ,
    "country": ,
    "contact_name": "",
    "email": "",
    "phone": ""
}

我只需要验证列名称和字段的顺序。 我使用了response assertions包含但它没有验证顺序,同时JSON path assertion验证对象值而不是参数(或验证完整的消息)但在我的情况下我需要验证确切的架构。

请帮忙

3 个答案:

答案 0 :(得分:1)

您可以使用map.keySet(),它会为您提供地图上的所有按键。

[ "snid",
  "subject",
  "state",
  "country",
  "contact_name",
  "email",
  "phone"
]

答案 1 :(得分:0)

我建议使用JSR223 AssertionGroovy JSON Schema,因为目前没有相关的捆绑测试元素和/或插件来涵盖此功能。确保JMeter Classpath

中有.jar

有关在JMeter中使用Groovy脚本的详细信息,请参阅Groovy Is the New Black文章。

答案 2 :(得分:0)

我找到了解决你的问题 首先将对象解析为json slurper

def slurper = new groovy.json.JsonSlurper();

def response = slurper.parseText(prev.getResponseDataAsString());

def testdata = response[0].keySet() as List;

这会将testdata保存为

[" snid"," subject"," state"," country"," contact_name",& #34;电子邮件""电话"]