15

在我目前正在工作的项目中,我们使用 cucumber 进行集成测试,并为了防止常规的每日构建变得太大,我们使用使用标签的配置文件来进行较小的每日测试和较大的每周构建测试套件。

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

精神上的东西

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

4 回答 4

34

经过一些研究,我发现这已经得到了开箱即用的支持。您只需在测试中添加两个示例标题。用我自己的例子来说明

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|
于 2013-08-02T12:17:59.660 回答
0

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

    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

于 2014-02-14T04:30:47.177 回答
0

我坐在调试器中,在“场景后”挂钩中,“场景”显示为 Cucumber:Ast:OutlineTable::ExampleRow 和“scenario.source_tag_names”返回功能标签和场景大纲标签。

直接在对象中查找,虽然我可以轻松找到表格和单元格引用,但我什至无法强制定位示例表格的标签。

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

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

于 2015-07-01T17:07:49.070 回答
0

这是数据表的一种可能的部分解决方法:

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 |

在您的代码中,您获得了表数据对象,您可以在那里检查它现在是什么环境,以及要使用什么数据。
但是应该在代码中实现多个测试(如第 1 周第 2 周)。
在这种情况下,这将很难:/

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

于 2019-12-16T17:49:28.080 回答