场景与场景大纲

23

背景:

我目前正在为一个Symfony2网页编写behat测试(Mink/Selenium)。 我有很多例子可供参考,实际编写它们应该不是问题。 步骤定义已经编写好了。

然而,在这些例子中,他们有时定义一个Scenario:,有时定义一个Scenario Outline:

问题:

这两种定义测试的方式有什么区别?

2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
41

根据官方指南:

复制和粘贴场景以使用不同的值很快就会变得乏味和重复。

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  |

场景大纲步骤提供一个模板,它不会直接运行。对于每个示例部分中的行(第一个标题行除外),都会运行一次场景大纲。

了解更多,请参考编写特性指南。


当我有“场景出口”时,是否必须拥有简单的“场景”? - Sal-laS
1
@Salman 不是的。Scenario Outline 只是一个带有一组示例的场景。每当您需要使用 Examples 部分时,您需要使用 Scenario Outline 而不是 Scenario。区别在于 Scenario 只会执行一次,而 Scenario Outline 则会针对表格中的每个示例执行。 - Jakub Zalas
1
可以在以下链接找到编写场景指南的新链接: https://docs.behat.org/en/latest/user_guide/writing_scenarios.html - dziobaczy
似乎应该可以自动检测到这一点。这是一个不必要的错误来源。从我所看到的,cucumber.js正确处理示例,即使你只写了“场景”。 - Post Self
@PostSelf 如果这是原始的Cucumber支持的功能,我相信Behat维护者会接受您的拉取请求,在他们的项目中也支持它。 - Jakub Zalas

-1

你所说的“更快的测试”具体是什么意思?另外,提供的链接已经失效。 - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,