首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据配置跳过Cucumber中的其余场景

问如何根据配置跳过Cucumber中的其余场景
EN

Stack Overflow用户
提问于 2021-08-22 23:08:46
回答 2查看 128关注 0票数 0

请帮助我们回答这个问题。

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

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

代码语言:javascript
复制
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源代码相关的代码,他们可能不关心在签入之前运行完整的套件。因此,我想到的是让所有用户的特性文件保持不变,但提供配置文件,用户可以在其中调整他们所关心的数据库,并且只运行这些数据库的测试。

下面是文件的样子:

代码语言:javascript
复制
books:
  Oracle:
    credentials:<database credentials>
    url:<url>
  Db2:
    credentials:<database credentials>
    url:<url>

注意到,它缺少卡夫卡,Hadoop,MySQL和Postgres的细节。

另一方面,构建系统可能希望运行整个测试套件,这样一个完整的configuration.yaml文件就可以解决这个问题。

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

EN

回答 2

Stack Overflow用户

发布于 2021-08-25 08:55:50

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

类似于:

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

票数 1
EN

Stack Overflow用户

发布于 2021-08-25 12:24:18

我可能会这样写

代码语言:javascript
复制
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本身的编程工作不太好(或者根本不起作用)。

在您的步骤定义中,如果您需要对不同的db进行不同的操作,则可以在case语句中使用帮助方法。

代码语言:javascript
复制
module MappingStepHelper
  def map_source
    case Orcacle
    case Postgres
    ...
  end
end
World MappingStepHelper

上面是用红宝石的方式来做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68885786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档