我有一个空手道功能文件,如下 -
Feature: Feature file
@env=dev
Scenario: runs only when karate.env is 'dev'
* print 'karate.env is:', env
@envnot=perf,prod
Scenario: never runs in perf or prod
* print 'karate.env is:', env
并在 karate-config.js 中设置 env 值,如下所示 -
var env = karate.env; // get system property 'karate.env'
karate.log('karate.env system property was:', env);
if (!env) {
env = 'dev';
}
karate.log('karate.env system property was:', env);
但是,当从功能文件或运行程序执行时,除非我们通过命令行运行,否则它会将 karate.env 视为 null。
09:15:22.988 [main] INFO com.intuit.karate - karate.env system property was: null
09:15:22.988 [main] INFO com.intuit.karate - karate.env system property was: dev
09:15:23.019 [main] INFO com.intuit.karate - [print] karate.env is: dev
但从命令行运行(mvn test“-Dkarate.env=dev”)它可以工作 -
09:16:55.118 karate.env system property was: dev
09:16:55.133 karate.env system property was: dev
09:16:55.165 [print] karate.env is: dev
不应该根据环境值而不是“karate.env”来选择场景吗?
这是设计使然。
karate.env
一旦启动测试套件,您就无法进行修改。您使用的示例
karate-config.js
只是为了方便设置env
可在JS 块中使用的局部变量叫。它不会超越karate-config.js
。