背景:
我目前正在为一个Symfony2网页编写behat测试(Mink/Selenium)。 我有很多例子可供参考,实际编写它们应该不是问题。 步骤定义已经编写好了。
然而,在这些例子中,他们有时定义一个Scenario:
,有时定义一个Scenario Outline:
问题:
这两种定义测试的方式有什么区别?
根据官方指南:
复制和粘贴场景以使用不同的值很快就会变得乏味和重复。
Scenario: Eat 5 out of 12
Given there are 12 cucumbers
When I eat 5 cucumbers
Then I should have 7 cucumbers
Scenario: Eat 5 out of 20
Given there are 20 cucumbers
When I eat 5 cucumbers
Then I should have 15 cucumbers
场景轮廓允许我们通过使用具有占位符的模板更简洁地表达这些示例。
Scenario Outline: Eating
Given there are <start> cucumbers
When I eat <eat> cucumbers
Then I should have <left> cucumbers
Examples:
| start | eat | left |
| 12 | 5 | 7 |
| 20 | 5 | 15 |
场景大纲步骤提供一个模板,它不会直接运行。对于每个示例部分中的行(第一个标题行除外),都会运行一次场景大纲。
了解更多,请参考编写特性指南。
场景就是它所描述的情境。
场景大纲使用占位符进行更快速的测试。
Scenario Outline
只是一个带有一组示例的场景。每当您需要使用Examples
部分时,您需要使用Scenario Outline
而不是Scenario
。区别在于Scenario
只会执行一次,而Scenario Outline
则会针对表格中的每个示例执行。 - Jakub Zalas