当前位置: 首页 > 知识库问答 >
问题:

从YAML读取空手道配置

聂宜
2023-03-14

我想在.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;
}

如https://github.com/intuit/Karate#reading-files所示,read()函数应该由Karate知道,但是我不确定这是只适用于.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个答案

杭昊空
2023-03-14

在JS中,使用karate对象,这里对其进行了解释:https://github.com/intuit/karate#the-karate-object

所以这应该起作用:

var config = karate.read('classpath:test.yaml');
 类似资料:
  • 问题内容: 我在使用spring通过java阅读yaml时遇到问题。让我先显示代码 我的yaml文件: Spring上下文xml也具有以下内容: 现在,我的期望是,在我的春季测试应用程序运行期间(上下文xml来自我的测试资源,yaml也处于我的测试中),这些orders和requests值已设置,但它们为空。另外,请注意,除了使用@Value($ {…})注入的值之外,yaml中还有其他值,注入它

  • 我正在尝试使用空手道进行e2e测试,并已从最低设置开始。我想在用于测试,但karate报告该文件不是js函数,因此测试无法获取配置: 这是我的: 这是我的测试: 这是测试运行程序:

  • 我有以下问题。我根据一个给定的概要文件在yaml文件中读取的值创建一个数据源。 我当前的问题是,当我用“dev”配置文件启动应用程序时,serviceId的值是'my-prod-service'。 我在这里做错了什么?

  • 在karate-config.js我基于环境设置了basUrl。我想能够得到这个网址在Java所以我可以得到相应的服务器名称在网址。请告诉我怎么做。我的karate-config.js看起来像这样: 我编写了一个Java实用程序来连接数据库并运行查询。但我需要知道数据库是在示例中的server1还是server2上。

  • 我刚开始穿弹力靴。这就是我要解决的问题。我有一个application.yml文件,它具有以下属性: 我尝试使用以下代码访问KinesisSenderFeature的值: 以及 PropertySourcesPlaceHolderConfigureer bean定义为: 是的,我确实看到了: 将Yaml中的列表映射到Spring Boot中的对象列表 Spring boot YAML配置未读取所有

  • 我的XML请求如下所示: null 我正在CDATA体中从外部传递#(ref),但它不读取它。 我在做什么不对劲吗?