【问题标题】:How to skip rest of the scenario in Cucumber depending on configuration如何根据配置跳过 Cucumber 中的其余场景
【发布时间】:2021-08-22 23:08:46
【问题描述】:

请帮助我们解决这个问题。

我们有一个数据迁移系统,可以将数据从不同的来源迁移到目标。比如从Oracle到Db2,从Postgres到Kafka,从MySQL到Hadoop等等。

在我们的特征文件中,我们可以有以下逻辑:

Scenario: Test data migraiton
  Given I have the following source to target mapping
    | source   | target |
    | Oracle   | Db2    |
    | Postgres | Kafka  |
    | MySql    | Hadoop |
  When I try to run migration basic test
  Then I get abc
  ...
  Then I get xyz

对于用户 1,如果他们添加了与 Oracle 源代码相关的代码,他们可能不关心在签入之前运行完整的套件。所以我的想法是让所有用户的功能文件保持相同,但提供配置文件,用户可以在其中调整他们关心的数据库并只为这些数据库运行测试。

文件如下所示:

books:
  Oracle:
    credentials:<database credentials>
    url:<url>
  Db2:
    credentials:<database credentials>
    url:<url>

请注意,它缺少 Kafka、Hadoop、MySQL 和 Postgres 的详细信息。

另一方面,构建系统可能想要运行整个测试套件,因此完整的 configuration.yaml 文件可以解决该问题。

我希望有一种方法可以有效地解决这个问题,而无需到处检查是否在配置 yaml 中定义了当前 {source,target}。如果不是,请跳过该组合的测试。

【问题讨论】:

  • 这听起来像xyproblem.info 为什么会有不同的用户使用不同的配置?您正在测试的功能是什么。
  • 编辑了问题。让我知道现在是否有意义。

标签: java cucumber bdd cucumber-jvm cucumber-java


【解决方案1】:

将“野兽花园”从场景中移除。

如果它不被场景测试,那么在场景中使用它是没有意义的。

【讨论】:

  • 谢谢。编辑原始问题以使其更有意义。
【解决方案2】:

因此,您正在针对不同系统的矩阵运行测试。看起来系统本身的细节没有经过测试。因此,您可以通过将经过测试的系统矩阵放入您的 CI 系统来解决这个问题。

类似:

Is there a way to use a single example file for all cucumber test?

【讨论】:

  • 是的,这听起来是个好方法。谢谢。
【解决方案3】:

我可能会通过写类似的东西来做到这一点

Given I am mapping from A to B
When I do a basic mapping
The I should get ...

并通过环境变量配置 A 和 B。这将允许用户和 CI 以他们希望测试的方式编写脚本,例如

cucumber features/mapping A=ORACLE B=Hadoop

这基本上是将编程(配置 A 和 B 并循环)从 Cucumber 拉到脚本中。一般来说,对于 Cuking,您希望将编程下推(到辅助方法中)或将其拉到脚本中。在 Cucumber 中编程本身就不能很好地工作(或根本不能)。

在你的步骤定义中,如果你需要为不同的数据库做不同的事情,你可以使用带有 case 语句的辅助方法,例如

module MappingStepHelper
  def map_source
    case Orcacle
    case Postgres
    ...
  end
end
World MappingStepHelper

以上是 ruby​​ 的做法。

【讨论】:

  • 是的,这听起来是个好方法,而且很简单,可以保持理智。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多