场景大纲示例的黄瓜标签

时间:2013-06-24 13:59:22

标签: cucumber automated-tests integration-testing

在我正在工作的项目中,我们使用黄瓜进行集成测试,并保持常规日常构建变得过大,我们使用标记使用标记来进行较小的每日测试和较大的每周构建测试套件。

现在我有一个场景大纲,其中包含我想要拆分的示例输入,以便一个示例在每日构建中,其他示例在每周构建中。

本着

的精神
Scenario Outline: Doing some tests
  Given a step
  When I do some <input>
  Then I should get some <output>

Examples:
  |input     |output    |
  @daily
  |daily 1   |daily 2 o |
  @weekly
  |week 1    |week 1 o  |
  |week 2    |week 3 o  |
      .           .
      .           .     
      .           .
  |week 999  |week 999 o|

这有可能吗?应该是吗?或者以这种方式做到这一点是一个愚蠢的想法?

4 个答案:

答案 0 :(得分:22)

经过一番研究后,我发现这已经开箱即用了。您只需要在测试中添加两个Example标头。用我自己的例子来说明问题

Scenario Outline: Doing some tests
  Given a step
  When I do some <input>
  Then I should get some <output>

@daily
Examples:
  |input     |output    |
  |daily 1   |daily 2 o |

@weekly
Examples:
  |input     |output    |
  |week 1    |week 1 o  |
  |week 2    |week 3 o  |
      .           .
      .           .     
      .           .
  |week 999  |week 999 o|

答案 1 :(得分:1)

您是否尝试过使用Before hook作为示例?它对我不起作用,可能是一个bug或功能。

    Scenario Outline: Doing some tests
    Given a step
    When I do some <input>
    Then I should get some <output>

    @daily
    Examples:
    |input     |output    |
    |daily 1   |daily 2 o |

    Before('@daily') do
     p "before daily"
    end

什么都没发生。看来黄瓜不知道前面的例子。使用Ruby Cucumber 1.3.10

答案 2 :(得分:0)

我坐在一个调试器中,在“后场景”钩子中,'scenario'显示为Cucumber:Ast:OutlineTable :: ExampleRow和'scenario.source_tag_names'返回特征标签和场景轮廓标签。

直接在对象中生根,虽然我可以很容易地找到表和单元格引用,但我甚至无法通过强制定位示例表的标记。

我们成功地使用示例表上的标签来过滤它们(根据接受的答案),所以Cucumber显然是为了这个目的而看到它们,但是所有这些标签似乎都可用 - 不是用于钩子,而不是从钩子上观察。

对我来说似乎有些不一致。

答案 3 :(得分:0)

这是data tables的一种可能的部分解决方法:

Scenario: Doing some tests
Given a step
When I do some input
 |env   | input  |
 |daily | daily 1|
 |weekly| week 1 |
 |weekly| week 2 |
Then I should get some output
 |env   | output   |
 |daily | daily 1 o|
 |weekly| week 1 o |
 |weekly| week 2 o |

在您的代码中,您将获得表数据对象,然后可以在此处检查它的环境以及要使用的数据。
但是应使用代码实施多个测试(如week1 week2)。
在这种情况下,:/

但是在其他情况下,解决方法也许会有用。