首页 > 解决方案 > 空手道 - 如何仅在一个环境中运行特定场景?

问题描述

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

有没有办法在空手道中实现这一目标?

我尝试过的事情 1. 创建一个包含 1 个场景的功能文件和另一个包含 99 个场景的功能文件 2. 将标签添加到 1 个场景文件 3. 运行时忽略它

但是当我在詹金斯工作中使用它时,我必须运行一个命令才能在两台机器上运行,所以无法正常工作

标签: karate

解决方案


用@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}

做起来有点长,但至少每个功能/场景上的标签将对应于它们被启动的情况


推荐阅读