Arjun
Arjun

Reputation: 163

How to traverse through a Json in Karate

I am trying to have a Karate test where I need to traverse through a json to get the required test data.

I have the below json.

{
   "dev":{
      "scenario1":{
         "data":"data1"
      },
      "scenario2":{
        "data":"data2"
      }
   },
   "qa":{
         "scenario1":{
         "data":"data1"
      },
      "scenario2":{
        "data":"data2"
      }
   }
}

Below is my feature file.

Background:
* def env = dev

Scenario:

* Given url someurl
* def inputData = testdata.env.scenario1.data
* And request { input: '#(inputData)'}
* When method post
* Then status 200

I need the test data that matches the value env that I have defined above. How can I set the json path to my input data. Basically, the json path should take the value from a variable I have defined previously.

Upvotes: 1

Views: 962

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58058

For this you don't even need Json-Path, just JS will do:

* def data = { foo: 1, bar: 2 }
* def env = 'bar'
* def res = data[env]
* match res == 2

Also see: https://stackoverflow.com/a/59162760/143475

You can also do dynamic Json-Path, see: https://stackoverflow.com/a/50855425/143475

Upvotes: 1

Related Questions