Karate 框架的特殊标签 @env/@envnot 不考虑 karate-config.js 中的 env 值

问题描述 投票:0回答:1

我有一个空手道功能文件,如下 -

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
1个回答
0
投票

这是设计使然。您无法修改已启动测试套件的

karate.env

您使用的示例

karate-config.js
只是为了方便设置一个名为
env
的局部变量,该变量可以在 JS 块中使用。它的寿命不会超过karate-config.js

© www.soinside.com 2019 - 2024. All rights reserved.