【问题标题】:Cucumber tags for scenario outline examples场景大纲示例的黄瓜标签
【发布时间】:2013-06-24 13:59:21
【问题描述】:

在我目前工作的项目中,我们使用 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|

这有可能吗?应该是吗?或者这样做是一个愚蠢的想法?

【问题讨论】:

    标签: cucumber automated-tests integration-testing


    【解决方案1】:

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

    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|
    

    【讨论】:

    • 尴尬:这非常棒,但似乎在示例块中应用标签时不会运行挂钩(即Before('@tag')After('@tag')
    • 不适用于当前版本 4.2.6 Cucumber - Java
    • 有谁知道这个问题是否已经修复,如果是这样,它是什么版本的库,Scenario Outlines 非常有用,但无法在它们上完成标记挂钩令人失望。
    • 它是否受 pytest-bdd 支持,它对我不起作用,我调用了类似 'pytest -k "daiily" ' 的测试。 pytest-bdd 需要进行任何更改吗?
    【解决方案2】:

    您是否尝试过使用 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

    【讨论】:

    • 遇到了同样的问题。有没有解决这个问题。如果是这样,cucumber/jvm 的 java 版本是什么?谢谢
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

      这是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 |
      

      在您的代码中,您可以获取表格数据对象,然后您可以在其中检查当前所处的环境以及要使用的数据。
      但随后应在代码中实现多个测试(如第 1 周第 2 周)。
      在这种情况下,将很难:/

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-11
        • 1970-01-01
        • 2018-07-21
        • 2019-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多