下面是我的config.js
function fn() {
var env = karate.env; // get java system property 'karate.env'
karate.log('karate.env system property was:', karate.env);
if (!env) {
env = 'dev'; // a custom 'intelligent' default
}
var config = { // base config JSON
tokenId: 'glpat-_JhsWtKDxTDdj8y7MSrT',
incorrectToken: 'glpat-yTewu9RxV97K6Uj385v',
baseUrl: 'https://gitlab.com/api/v4',
sampleProjectId: '39946432'
};
if (env == 'ST') {
// over-ride only those that need to be
config.baseUrl = 'https://st-host/v1/auth';
} else if (env == 'e2e') {
config.baseUrl = 'https://et-host/v1/auth';
}
// don't waste time waiting for a connection or if servers don't respond within 5 seconds
karate.configure('connectTimeout', 5000);
karate.configure('readTimeout', 5000);
karate.configure('ssl', true);
return config;
}
下面的代码工作正常:
如果我用下面的代码修改了我的 Runner 类 -
@BeforeClass
public static void before() {
System.setProperty("karate.env", "e2e");
}
然后奔跑 -
mvn test -Dtest=TestRunnerE2E
然后我进入 karate.log 为 -
09:13:02.200 [pool-1-thread-1] INFO com.intuit.karate - karate.env system property was: e2e
以下设置无法正常工作: 但我不想为不同的环境保留不同的运行程序文件。 所以我尝试运行以下命令 -
mvn test -DargLine="-Dkarate.env=e2e"
mvn test -Denv=e2e
但是在这两种情况下环境设置都不正确 -
09:20:10.799 [pool-1-thread-1] INFO com.intuit.karate - karate.env system property was: local
不确定我在这里错过了什么?通过设置 system.setProperty 可以正常工作,但不能直接从命令行设置。
maven 详细信息:
mvn -version
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T17:06:16+02:00)
Maven home: C:\Program Files\apache-maven-3.6.2\bin\..
Java version: 1.8.0_342, vendor: Azul Systems, Inc., runtime: C:\Program Files\Zulu\zulu-8\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
致以诚挚的问候,
阿比
不确定您是否找到解决方案。您可以在 mvn 命令中将 karate.env 作为独立参数传递。这是一个例子。
mvn test clean -Dkarate.env=testValFromCmd
我正在使用 ./gradlew clean test -Dkarate.env=rnd
上面的命令不起作用,抛出错误 .env not found