空手道-如何仅在一个环境中运行特定方案?

时间:2019-01-22 12:19:11

标签: karate

考虑到有100个场景,我想在产品环境中运行99个场景,在舞台环境中运行100个场景。

有没有办法在空手道中做到这一点?

我尝试过的事情 1.创建具有1个场景的功能文件,并创建其余99个功能文件 2.将标签添加到1个方案文件中 3.运行时忽略

但是当我在jenkins作业中使用它时,我必须在两个机器上运行一个命令才能运行

2 个答案:

答案 0 :(得分:3)

针对这种情况的最佳解决方案是karate.abort() API:

因此,在“特殊”场景#100中-您可以执行以下操作:

Scenario:
  * eval if (karate.env == 'prod') karate.abort()
  # normal scenario steps

请注意,空手道0.9.0及更高版本中有advanced options for tag selectors-但请坚持上述解决方案:)

答案 1 :(得分:2)

用@hundred标记第100个方案,并在要运行99个方案时运行以下命令

mvn test -Dkarate.options="--tags ~@hundred"

要运行所有测试,只需运行mvn test

您可以标记场景

@hundred
Scenario: the scenario only played in one case
Given <...>

但是您也可以标记功能

@hundred
Feature: The feature containing the scenario only played in one case

Background:
* <..>

Scenario: <...>

在回答后进行编辑: 您可以使用第二个运行时变量:

mvn test -Dkarate.options="--tags ~@{variable2}" -Dkarate.env={variable}

或者甚至使用相同的运行时变量:

mvn test -Dkarate.options="--tags ~@{variable}" -Dkarate.env={variable}

那可能不是最好的解决方案,但是您可以将@Prod添加到99个方案中,并将@Stage添加到所有方案中,然后将命令切换到此:

mvn test -Dkarate.options="--tags @{variable}" -Dkarate.env={variable}

这需要花更长的时间,但至少每个功能/场景上的标签都将与启动它们的情况相对应