Pass Json to karate-config.js file

前端 未结 1 1599
隐瞒了意图╮
隐瞒了意图╮ 2020-12-06 23:19

I have more than 6 environments against which i have to run the same set of rest api scripts. For that reason i have stored all that test data and the end points/resource pa

相关标签:
1条回答
  • 2020-12-06 23:36

    I think you over-complicated your JSON. You just need one object and no top-level array. Just use this as env_data.json:

    {
       "qa":{
          "username_cm_on":"test_cm_on_qa",
          "password_cm_on":"Test123$",
          "nonadmin_username_cm_on":"test_non_admin_cm_on_qa",
          "nonadmin_password_cm_on":"Test123$",
          "username_cm_off":"test_cm_off_qa",
          "password_cm_off":"Test123$",
          "nonadmin_username_cm_off":"test_non_admin_cm_off_qa",
          "nonadmin_password_cm_off":"Test123$",
          "zuul_urls":{
             "home-sec-uri":"https://qa.abc.com/qa/home-sec-uri",
             "home-res-uri":"https://qa.abc.com/qa/home-res-uri"
          }
       },
       "uat":{
          "username_cm_on":"test_cm_on_uat",
          "password_cm_on":"Test123$",
          "nonadmin_username_cm_on":"test_non_admin_cm_on_uat",
          "nonadmin_password_cm_on":"Test123$",
          "username_cm_off":"test_cm_off_uat",
          "password_cm_off":"Test123$",
          "nonadmin_username_cm_off":"test_non_admin_cm_off_uat",
          "nonadmin_password_cm_off":"Test123$",
          "zuul_urls":{
             "home-sec-uri":"https://uat.abc.com/qa/home-sec-uri",
             "home-res-uri":"https://uat.abc.com/qa/home-res-uri"
          }
       }
    }
    

    And then this karate-config.js will work:

    function() {
      var env = 'qa'; // karate.env
      var temp = read('classpath:env_data.json');
      return temp[env];
    }
    

    And your tests can be more readable:

    Given url zuul_urls['home-sec-uri']
    
    0 讨论(0)
提交回复
热议问题