2014-02-25 57 views
4

下面是我的JSON响应数据,我需要使用下面的响应进行断言。我尝试了很多方法来编写JSON路径&预期值。总是断言失败。我想要的是请大家帮忙写了下面的数据Jmeter JSON路径声明

{ 
    "statusCode": 200, 
    "statusMessage": "Success", 
    "errorMessage": "", 
    "responseData": { 
     "id": 15, 
     "userName": "[email protected]", 
     "firstName": "tarento", 
     "lastName": "test1", 
     "phoneNumber": "1234567812", 
     "email": "[email protected]", 
     "password": "", 
     "city": "", 
     "agentList": [ 
      { 
       "id": 37, 
       "userName": "[email protected]", 
       "firstName": "Sanjay", 
       "lastName": "rahul", 
       "phoneNumber": "7411269480", 
       "email": "[email protected]", 
       "password": "", 
       "active": true 
      }, 
      { 
       "id": 68, 
       "userName": "[email protected]", 
       "firstName": "jinesh", 
       "lastName": "sumedhan", 
       "phoneNumber": "9400993826", 
       "email": "[email protected]", 
       "password": "", 
       "active": true 
      }, 
      { 
       "id": 108, 
       "userName": "[email protected]", 
       "firstName": "Rahul", 
       "lastName": "Antony", 
       "phoneNumber": "9994590241", 
       "email": "[email protected]", 
       "password": "", 
       "active": true 
      }, 
      { 
       "id": 304, 
       "userName": "[email protected]", 
       "firstName": "Agent", 
       "lastName": "Agent", 
       "phoneNumber": "9025699716", 
       "email": "[email protected]", 
       "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" 
      } 
     ] 
    } 
} 

我收到以下响应

+0

提供像什么是你写的JSON路径更多的细节?你的例子中的期望值是多少? – hemanth

+0

请检查下面的图片,我的测试计划及其回答 – Sreenivas

+2

您是否尝试删除方括号? – olyv

回答

3

我个人更喜欢使用BSF PostProcessor中的路径和预期值与Groovy语言结合使用。如何分析使用Groovy JSON例如,你可以在这里找到how to parse json using groovy

+0

嗨谢谢你回应我,我是新的Jmeter和即时通讯不太舒服与后处理器你可以分步如何检查如何检查json数据断言 – Sreenivas

+0

嗨,我会很乐意帮助你,但你能否展示你到目前为止所尝试过的? – olyv

+0

请检查上面的图片,我的测试计划及其回复 – Sreenivas

1

对于启动以下JSONPath断言将考验你的statusCode

$.statusCode 

200到JSONPath断言的期望值。

这一个是userName

$.responseData.userName 

简单,不是吗?请参阅Parsing JSON指南了解更多有用的示例和操作方法。

+0

请检查下面的图像,我的测试计划&及其响应 – Sreenivas

+0

将您的'JSONPath'声明**作为HTTP请求的子**添加并删除括号200 –

+0

谢谢@Dmitri T – Sreenivas

4

我发现JSR223断言与脚本语言javascript是最容易的。至少如果你有在Java和JavaScript的知识。并且不需要添加任何插件。详细

我的工作代码:

var json = JSON.parse(SampleResult.getResponseDataAsString()); 
if (json.statusCode != 200) { 
    AssertionResult.setFailureMessage("" 
     + json.statusCode 
     + " " + json.statusMessage 
     + " " + json.errorMessage); 
    AssertionResult.setFailure(true); 
}