简体   繁体   English

无法在空手道功能文件中的环境之间切换

[英]Unable to switch between environment in karate feature file

As per KARATE documentatoion we should use System.setProperty() to set env in test case level, But that option is not working in karate 1.2.0 (Didn't verify in previous versions)根据 KARATE 文档,我们应该使用 System.setProperty() 在测试用例级别设置 env,但是该选项在 karate 1.2.0 中不起作用(在以前的版本中没有验证)

Feature特征


Feature: Testing env changing
  Scenario: Reading base url of different env
  * print 'Before changing env...---> '+ karate.env
  * print 'Testing karate...'
  * print baseUrl
  * java.lang.System.setProperty("karate.env","STAGE")
  * def newevn = java.lang.System.getProperty('karate.env')
  * print 'After changing env...---> '+ newevn
  * def fun = call read('file:karate-config.js') 
  * print 'Changed env...---> '+ fun.baseUrl

Karate-Config.js file-空手道-Config.js 文件-

function fn() {
  karate.configure('connectTimeout', 5000);
  karate.configure('readTimeout', 5000);
  var env = karate.env;
  karate.log('karate.env system property was:', env);

  var baseUrl = 'testingbase.com';
  karate.log('Env---->' + env)
  var port = karate.properties['demo.server.port'] || '8080';
  var protocol = 'http';

  var config = {
    env: env,
    baseUrl: 'https://localapi.abc123.example.com/api/v1/validate/customerid',
    apiKey: ''
  }
  if (karate.properties['demo.server.https'] === 'true') {
    protocol = 'https';
    karate.configure('ssl', true);
  }
  var config = { demoBaseUrl: protocol + '://127.0.0.1:' + port };
  if (env== 'mock') {
    // karate.configure('callSingleCache', { minutes: 1 });
    // 'callSingle' is guaranteed to run only once even across all threads
    //var result = karate.callSingle('classpath:demo/headers/common-noheaders.feature', config);
    // and it sets a variable called 'authInfo' used in headers-single.feature
   // config.authInfo = { authTime: result.time, authToken: result.token };
  }
  else if(env=='BETA'){
 config.baseUrl='tetsing.beta.base.com';

  }
  else if(env=='STAGE'){
config.baseUrl='tetsing.stage.base.com';

  }
  return config;
}

Please note that you can't call java.lang.System.setProperty() within a feature and expect that to work.请注意,您不能在功能中调用java.lang.System.setProperty()并期望它能够正常工作。 The environment is locked in at the time that karate-config.js is evaluated, which is before a Feature even executes.在评估karate-config.js时,环境被锁定,甚至在Feature执行之前。

Please read the docs: https://github.com/karatelabs/karate#switching-the-environment请阅读文档: https ://github.com/karatelabs/karate#switching-the-environment

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM