请帮助我们回答这个问题。
我们有一个数据迁移系统,可以将数据从不同的源迁移到目标。例如,从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>注意到,它缺少卡夫卡,Hadoop,MySQL和Postgres的细节。
另一方面,构建系统可能希望运行整个测试套件,这样一个完整的configuration.yaml文件就可以解决这个问题。
我希望有一种方法可以有效地解决这个问题,而不必到处检查是否在配置yaml中定义了当前的{源、目标}。如果没有,跳过该组合的测试。
发布于 2021-08-25 08:55:50
因此,您正在针对不同系统的矩阵运行您的测试。看起来系统本身的细节还没有经过测试。因此,您可以通过将测试系统的矩阵放入您的CI系统来解决这个问题。
类似于:
Is there a way to use a single example file for all cucumber test?
发布于 2021-08-25 12:24:18
我可能会这样写
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语句中使用帮助方法。
module MappingStepHelper
def map_source
case Orcacle
case Postgres
...
end
end
World MappingStepHelper上面是用红宝石的方式来做的。
https://stackoverflow.com/questions/68885786
复制相似问题