karate - 空手道 - 如何仅在一个环境中运行特定场景?
问题描述
考虑有 100 个场景,我想在 prod 环境中运行 99 个场景,在舞台环境中运行 100 个。
有没有办法在空手道中实现这一目标?
我尝试过的事情 1. 创建一个包含 1 个场景的功能文件和另一个包含 99 个场景的功能文件 2. 将标签添加到 1 个场景文件 3. 运行时忽略它
但是当我在詹金斯工作中使用它时,我必须运行一个命令才能在两台机器上运行,所以无法正常工作
解决方案
用@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}
做起来有点长,但至少每个功能/场景上的标签将对应于它们被启动的情况
推荐阅读
- android - Gradle 挂在 :app:transformDexWithInstantRunSlicesApkForDebug
- docker - 大厅任务是否会覆盖 docker 图像入口点?
- django - Django modelform - 制作一个基于其他模型提供选择的模型表单
- jenkins - 无法安装插件
- javascript - Angular 6在客户端以pdf格式保存材料向导数据
- ios - Swift 在 UITableView 内的数组中获取值的第一个实例
- android - 这里不再允许使用元素 font-family :Android Studio
- php - Codeigniter - 尝试使用 postgresql 时出现问题
- java - Spring Batch Job 的连接重置问题
- google-analytics - 如何创建可以跟踪 API 调用的分析程序