Cucumber 先运行所有给定步骤,然后再运行步骤
我有如下几个特性来测试一些数据处理的结果Cucumber 先运行所有给定步骤,然后再运行步骤,cucumber,cucumber-jvm,Cucumber,Cucumber Jvm,我有如下几个特性来测试一些数据处理的结果 功能:A 情景:A1 给定我加载数据A2 那么A1的输出是输出\u A1 情景A2 给定我加载数据A2 那么A2的输出是输出_A2 我想先加载所有数据,然后像下面那样检查输出,因为这样速度更快 给定我加载数据A2 给定我加载数据A2 那么A1的输出是输出_A1 那么A2的输出是输出_A2 有没有办法在幕后完成这项工作,并像第一个案例那样提交报告 我在想办法告诉cucumber先运行所有给定的场景,然后再运行所有场景。cucumber实际上没有区分
功能:A
情景:A1
给定我加载数据A2
那么A1的输出是输出\u A1
情景A2
给定我加载数据A2
那么A2的输出是输出_A2
我想先加载所有数据,然后像下面那样检查输出,因为这样速度更快
给定我加载数据A2
给定我加载数据A2
那么A1的输出是输出_A1
那么A2的输出是输出_A2
有没有办法在幕后完成这项工作,并像第一个案例那样提交报告
我在想办法告诉cucumber先运行所有给定的场景,然后再运行所有场景。cucumber实际上没有区分给定的关键字和Then关键字,所以你不能告诉cucumber先运行所有给定的场景 您可以将场景设置为在所有其他场景之前运行:
Scenario: Load data
Given the Data Exists
Then I load all the Data
在其中加载以下场景的所有数据
Scenario: A1
Given the A1 data is loaded
Then the output for A1 is output_A1
如果给定步骤只是检查数据是否正在加载,则应使用背景设置测试的上下文。顺便说一下,您缺少示例中的When步骤。什么时候是你行动的地方
Feature: A
Backgroud:
Given I load data A
Scenario: A1
When whatever A1
Then output is for A1 is output_A1
Scenario: A2
When whatever A2
Then output is for A2 is output_A2
尽管您描述的行为可以在@Before(Cucumber注释)钩子中完成,如果您希望在每个场景之前加载数据,或者在您的Runner类中,在@BeforeClass(JUnit注释)中完成,以便在所有测试之前加载数据
但要小心最后一个选项,因为它很容易被滥用。加载装置时,应使用常规给定的背景或before钩子,而不是@BeforeClass注释,以保持场景干净和独立
@RunWith(Cucumber.class)
@CucumberOptions(format = "pretty")
public class RunCukesTest {
@BeforeClass
public void setUp(){
// Load data A2
}
}
希望这能有所帮助。黄瓜是做这种事情的错误工具。而是为数据处理编写一个单元测试 因为单元测试是用编程语言实现的,所以很容易预加载所有数据,按特定顺序运行 如果必须使用Cucumber来执行此操作,那么要做的就是将所有编程向下推到步骤定义中。所以你最终得到了一个类似于
Scenario: Run the A tests
When I run the A tests
Then I should get no errors
现在,您可以在When步骤中进行数据加载和循环,并在Then步骤中查询保存的结果 谢谢你的回答,Kyle,但是我想像第一个特性那样显式地显示报告。