首页 > 解决方案 > 如何在命令行中仅覆盖测试的 URL?

问题描述

在我的 karate-config.js 中,我为我在测试中使用的端点设置了默认 url:

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

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

我知道在 karate-config.js 文件中设置不同的环境,但在某些情况下,直到运行时我才知道“pricingApiUrl”的确切网址。

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

标签: karate

解决方案


这是我发现的一种方法:

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


推荐阅读