通过命令行通过 Maven 将附加参数传递给 karate-config.js

Pass additional parameters to karate-config.js via command line via Maven

我有额外的设置需要在 运行 时通过 Maven 传递给 Karate,这些设置将在 karate-config.js 中可用。目前我可以使用 karate.env 属性 传递一个字符串 - 是否有必要将我的参数编码为 JSON 对象并通过这个 属性 传递它们或者我可以做类似的事情:

mvn test -DargLine="-Dkarate.env='production' -Dkarate.clientid='1234567890' ...

这样我就可以在 karate-config.js 中引用 karate.clientid,我可以将它保存到返回的配置对象中。

我确定我在这里遗漏了一些明显的东西...

是的! karate.properties['karate.clientid'].

参考 documentation

我找到了方法,但我没有使用示例。我做了什么:

  • 在Gradle:

    task api(type:Test) {
       systemProperty "karate.clientId", System.properties.getProperty("karate.clientId")...
     }
    
  • karate-config.js中(在var config中):

    clientId: karate.properties['karate.clientId'] || 'xyz'
    
  • 在命令行中:

    '-Dkarate.clientId=abc'
    

如果我不在命令行中设置 clientIdclientId 将是 'xyz'

你可以这样传递参数

mvn test -D clientId=123 -D baseurl=test.com

并在空手道-config.js中将它们称为

karate.properties['clientId'] and karate.properties['baseurl']