chandra shekar
chandra shekar

Reputation: 47

karate scenario outline - Create a dynamic example table based on JSON array index size

Here I would like to clarify about creating dynamic example table for a dynamic JSON index size

My JSON looks like

Env - Dev - 2 servers

"response": {
    "abc": [{
            "status": "pass"
                .
                .
        },
        {
            "status": "pass"
                .
                .
        }
    ]
}

Env - Uat - 3 servers

{
    "response": {
        "abc": [{
                "status": "pass"
            },
            {
                "status": "pass"
            },
            {
                "status": "pass"
            }
        ]
    }
}

My scenario outline looks like

Scenario Outline: validating .....

When def result = callonce read('featurefilename@tagname')

Then print result

And print <status>

And print ...

And match ....

Examples:

|result.response.abc|

Errors for the above:

1) * dynamic expression evaluation failed:result.response.abc

2) com.intuit.karate.karateExpresion: ---- javascript evaluation failed result.response.abc, ReferenceError:"result" is not defined in at line number 1

Note - If I move step 'When def result = callonce read('featurefilename@tagname') to background it's working as expected but I can't use background in my feature file due to other factors.

Thanks in advance

Upvotes: 1

Views: 5447

Answers (1)

Babu Sekaran
Babu Sekaran

Reputation: 4239

Instead of providing index in a table you can leverage Dynamic Scenario Outline feature in karate.

In this case you you can pass the variable as a input to Examples. If the JSON provided above is from variable result then,

Examples:
 | result.response.abc |

Refer the docs for more insights.

Upvotes: 1

Related Questions