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】:

我发现带有脚本语言javascriptJSR223 断言 是最简单的。至少如果你有 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路径断言的主要内容,如果未能解决你的问题,请参考以下文章

jmeter-beanshell断言

jmeter提取json数据进行接口参数关联

jmeter后置处理器--json提取器

Jmeter 断言

JMeter json路径在响应中声明json或数组

JMeter断言之JSON断言