我想在 .yml
/ .yaml
文件中定义特定于环境的属性 . 因此我创建了以下 test.yaml
:
baseUrl: 'http://localhost:1234'
接下来,我写了这个 karate-config.js
:
function() {
var env = karate.env;
if (!env) {
env = 'test'; // default is test
}
// config = read(env + '.yaml')
var config = read('/home/user/git/karate-poc/src/test/java/test.yaml');
// var config = read('test.yaml');
// var config = read('classpath:test.yaml');
return config;
}
正如在这里看到的那样 read()
函数应该为空手道所知,但是我不确定这是否仅适用于 .feature
文件或 karate-config.js
.
不幸的是,上述 read()
都没有工作,因为我收到了这个错误:
Caused by: com.intuit.karate.exception.KarateException: javascript function call failed: could not find or read file: /home/user/git/karate-poc/src/test/java/test.yaml, prefix: NONE
at com.intuit.karate.Script.evalFunctionCall(Script.java:1602)
我确信该文件存在且可读 .
我做错了什么还是我的做法不受支持?如果它不受支持,那么建议的方法是从YAML文件(一次)中读取基于环境的配置,以便在(多个) .feature
文件中使用它?
非常感谢你
编辑:项目的树结构:
.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
└── src
└── test
└── java
├── karate
│ └── rest
│ ├── rest.feature
│ └── RestRunner.java
├── karate-config.js
└── test.yaml
运行 ./gradlew test
1 回答
在JS中,使用
karate
对象,这里解释:https://github.com/intuit/karate#the-karate-object所以这应该工作: