我需要在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
验证对象值而不是参数(或验证完整的消息)但在我的情况下我需要验证确切的架构。
请帮忙
答案 0 :(得分:1)
您可以使用map.keySet()
,它会为您提供地图上的所有按键。
[ "snid",
"subject",
"state",
"country",
"contact_name",
"email",
"phone"
]
答案 1 :(得分:0)
我建议使用JSR223 Assertion和Groovy 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;电子邮件""电话"]