Jmeter JSON路径断言
Posted
技术标签:
【中文标题】Jmeter JSON路径断言【英文标题】:Jmeter JSON Path Assertion 【发布时间】:2014-03-27 05:22:52 【问题描述】:以下是我的 JSON 响应数据,我需要使用以下响应进行断言。我尝试了多种方式来编写 JSON 路径和期望值。总是断言失败。我想要的是请帮助编写以下数据的路径和预期值
"statusCode": 200,
"statusMessage": "Success",
"errorMessage": "",
"responseData":
"id": 15,
"userName": "partner@tarento.com",
"firstName": "tarento",
"lastName": "test1",
"phoneNumber": "1234567812",
"email": "partner@tarento.com",
"password": "",
"city": "",
"agentList": [
"id": 37,
"userName": "Rahul.antonyRaj@tarento.com",
"firstName": "Sanjay",
"lastName": "rahul",
"phoneNumber": "7411269480",
"email": "Rahul.antonyRaj@tarento.com",
"password": "",
"active": true
,
"id": 68,
"userName": "jinesh.sumedhan@tareto.com",
"firstName": "jinesh",
"lastName": "sumedhan",
"phoneNumber": "9400993826",
"email": "jinesh.sumedhan@tareto.com",
"password": "",
"active": true
,
"id": 108,
"userName": "a.sanjayrahul@gmail.com",
"firstName": "Rahul",
"lastName": "Antony",
"phoneNumber": "9994590241",
"email": "a.sanjayrahul@gmail.com",
"password": "",
"active": true
,
"id": 304,
"userName": "a.sanjayrajish@gmail.com",
"firstName": "Agent",
"lastName": "Agent",
"phoneNumber": "9025699716",
"email": "a.sanjayrajish@gmail.com",
"password": "",
"active": true
],
"roleName": "admin",
"sessionKey": "435tnerLt9813942160478oDse46345635#1",
"partner":
"id": 1,
"name": "Tarento",
"cityList": [
"bangalore",
"mumbai"
],
"phone": "1234567812",
"url": ""
,
"isActive": true,
"isDeleted": false,
"roleId": 1,
"countryCode": "",
"tags": [
"tagId": 1,
"name": "all",
"description": "this is default tag of all driver."
,
"tagId": 2,
"name": "airport",
"description": ""
,
"tagId": 3,
"name": "street",
"description": "any text message"
,
"tagId": 255,
"name": "night",
"description": "night"
]
我收到以下回复
【问题讨论】:
提供更多细节,比如你写的 json 路径是什么?您的示例中的预期值是多少? 请查看下面的图片、我的测试计划及其响应 您是否尝试删除方括号? 在预期值中将[200]
更改为200
。
删除方括号有效,但我应该如何知道 JSON 路径断言已通过?
【参考方案1】:
对于开始跟随 JSONPath 断言将测试您的 statusCode
$.statusCode
将 200
放入 JSONPath 断言的预期值。
这个是给userName
的
$.responseData.userName
很简单,不是吗?有关更多有用的示例和操作方法,请参阅Parsing JSON 指南。
【讨论】:
请查看下面的图片、我的测试计划及其响应 添加您的JSONPath
断言作为您的 HTTP 请求的子项,并删除 200 左右的括号【参考方案2】:
我发现带有脚本语言javascript
的JSR223 断言 是最简单的。至少如果你有 java 和 javascript 方面的知识。并且无需添加任何插件。
详细我的工作代码:
var json = JSON.parse(SampleResult.getResponseDataAsString());
if (json.statusCode != 200)
AssertionResult.setFailureMessage(""
+ json.statusCode
+ " " + json.statusMessage
+ " " + json.errorMessage);
AssertionResult.setFailure(true);
【讨论】:
【参考方案3】:我个人更喜欢将 BSF PostProcessor 与 Groovy 语言结合使用。如何使用 Groovy 解析 JSON 的示例,您可以在此处找到 how to parse json using groovy
【讨论】:
您好,感谢您回复我,我是 Jmeter 的新手,我对后处理器不太满意,您能否逐步分享如何检查 json 数据的断言 您好,我很乐意为您提供帮助,但您能否展示一下您到目前为止所做的尝试? 请检查上面的图片,我的测试计划和它的反应 为什么要编辑我的答案??你确定你想回答我而不是@Dmitriy T? 恢复到原来的帖子,你为什么不更新你的问题,@Sreenivas?以上是关于Jmeter JSON路径断言的主要内容,如果未能解决你的问题,请参考以下文章