[英]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.