Jmeter JSON Path Assertion
Asked Answered
M

3

6

Below is my JSON response data, I need to do assertion using the below response. I tried in many ways to write JSON path & Expected Value. Always assertion fails. What I want is please help to write the path and expected value for the below data

{
    "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"
            }
        ]
    }
}

I received the following response

Mink answered 25/2, 2014 at 6:40 Comment(7)
Provide more details like what is the json path you've written? what is the expected value in your example?Markup
Please check the below images,my test plan & and its responseMink
Did you try to remove square brackets?Frogman
Change [200] to 200 in Expected value.Markup
Removing square brackets works,but how should I will know the JSON path assertion got passed ?Mink
@Mink You won't be getting error like the one in your last screenshot.Markup
Thank you guys it worked and I understood the conceptMink
I
4

For start following JSONPath Assertion will test your statusCode

$.statusCode

put 200 to Expected Value of JSONPath Assertion.

This one is for userName

$.responseData.userName

Easy, isn't it? See Parsing JSON guide for more useful examples and how-tos.

Immigration answered 25/2, 2014 at 14:18 Comment(2)
Please check the below images,my test plan & and its responseMink
Add your JSONPath assertion as a child of your HTTP Request and remove brackets around 200Immigration
C
4

I found the JSR223 Assertion with script language javascript to be the easiest. at least if you have knowledge in java and javascript. And no need to add any plugins.

My working code in detail:

var json = JSON.parse(SampleResult.getResponseDataAsString());
if (json.statusCode != 200) {
    AssertionResult.setFailureMessage("" 
        + json.statusCode 
        + " " + json.statusMessage
        + " " + json.errorMessage);
    AssertionResult.setFailure(true);
}
Condom answered 19/9, 2014 at 8:49 Comment(1)
I used your code, but getting assertion failure: Assertion failure message:javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: JSON for class: Script1Lianna
F
3

I personally prefer to use BSF PostProcessor in coupling with Groovy language. Example of how to parse JSON with Groovy you can find here how to parse json using groovy

Frogman answered 25/2, 2014 at 9:41 Comment(6)
Hi thank you for responding me,I'm new to Jmeter and im not that comfortable with Post Processor could you share step by step how to check the assertion for json dataMink
Hi, I will be happy to help you but can you please show what you have tried so far?Frogman
Please check the above images,my test plan & and its responseMink
Why do you edit my answer?? Are you sure you wanted to answer me but not @Dmitriy T?Frogman
Reverted to the original post, why don't you update your question, @Sreenivas?Kimkimball
@Dmitriy T - sorry for editing ur answer .@Kimkimball I have posted my test plan and response. I need correct JSON path and expected value based on the above JSON dataMink

© 2022 - 2024 — McMap. All rights reserved.