如何在命令行中为我的测试覆盖 URL?

How do I override just the URL for my test at the command line?

在我的空手道中-config.js,我已经为我在测试中使用的端点设置了默认 url:

var config = {
    env: env,
    pricingApiUrl: 'http://localhost:8080'
  }

在我需要此端点的测试中,我将 'url' 分配给该端点 * url pricingApiUrl

我知道如何在 karate-config.js 文件中设置不同的环境,但在某些情况下我不知道 'pricingApiUrl' 的确切 url 直到 运行时间。

所以我想知道当我在命令行 运行 测试时是否可以通过命令行标志设置 'pricingApiUrl'。

没有直接的方法。也许你可以贡献代码:)

您可以检查系统-属性 并有条件地做一些事情。例如:

var config = {
  env: env,
  pricingApiUrl: karate.properties['from.cli'] || 'http://localhost:8080'
}

其他想法:

这是我发现的一种方法:

1.) 在您的 karate-config.js 中添加以下内容,以便您的测试默认使用 'http://localhost:8080'(或任何适合您的默认 url)或使用来自 karate.properties 如果存在:

var config = {
    env: env,
    pricingApiUrl: karate.properties['platform.pricing.api.url'] || 'http://localhost:8080'
}

2.) 然后,运行 你在命令行的测试传递了一个你定义的 karate.properties 的值(karate.properties['platform.pricing.api.url'] 在我的例子中):

mvn clean test -Dplatform.pricing.api.url=https://your_heroku_app.herokuapp.com

'platform.pricing.api.url' 只是一个任意的描述性名称。您可以使用不同的。

url https://your_heroku_app.herokuapp.com 只是一个例子——将 api 的基础 url 放在你的测试中 运行ning against