Cucumber 场景大纲示例的cumber标记

Cucumber 场景大纲示例的cumber标记,cucumber,automated-tests,integration-testing,Cucumber,Automated Tests,Integration Testing,在我目前正在工作的项目中,我们使用cucumber进行集成测试,并且为了防止常规的每日构建变得太大,我们使用了使用标记的概要文件来进行较小的每日测试和较大的每周构建测试套件 现在我有了一个场景大纲,其中包含了我想要分割的示例输入,以便一个示例在每日构建中,其他示例在每周构建中 精神上的东西 Scenario Outline: Doing some tests Given a step When I do some <input> Then I should get som

在我目前正在工作的项目中,我们使用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|
场景大纲:做一些测试
迈出一步
当我做一些
那我应该买一些
示例:
|输入|输出|
@每日
|每日1 |每日2点|
@周报
|第1周|第1周o|
|第2周|第3周o|
.           .
.           .     
.           .
|第999周|第999周o|

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

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

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 |每日2点|
@周报
示例:
|输入|输出|
|第1周|第1周o|
|第2周|第3周o|
.           .
.           .     
.           .
|第999周|第999周o|

您是否尝试过使用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
场景大纲:做一些测试
迈出一步
当我做一些
那我应该买一些
@每日
示例:
|输入|输出|
|每日1 |每日2点|
在('@daily')之前
p“每日前”
结束

什么也没发生。cucumber似乎不知道以前的例子。使用Ruby Cucumber 1.3.10

我坐在调试器中,在“场景后”钩子中,“场景”显示为Cucumber:Ast:OutlineTable::ExampleRow和“scenario.source\u tag\u names”返回功能标签和场景大纲标签

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

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


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

以下是一种可能的局部解决方法:

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


但是,这种变通方法在其他情况下可能会有用。

一个尴尬:这是非常好的,但看起来挂钩(即,
在('@tag')
之前和('@tag')
之后)
在示例块中应用标记时不会运行。在当前版本4.2.6 Cucumber-java中不工作。有人知道这是否已修复,如果已修复,则说明库的哪个版本、场景大纲非常有用,但无法在其上完成标记挂钩令人失望。pytest bdd是否支持它,它对我不起作用,我像“Daily”一样调用了测试“pytest-k”。pytest bdd所需的任何更改都遇到了相同的问题。这已经解决了。如果是,cucumber/jvm的java版本是什么?thnx
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 |