使用 behave 标签只执行此类标签的一个子案例

Use behave tags to execute only a subcase of such tag

我在 sample.feature 文件中有以下场景定义,场景有两个使用 Examples 语法的子案例:

  @ninja
  Scenario Outline: this is a sample scenario
    Given ...
    And ...
    And ..
    When ...
    Then ...

    Examples:
      | param1 | param2 | param3 |
      |     10 |      4 |      9 | 
      |     20 |      8 |     23 |

我可以使用标签 ninja 只执行该场景,以及 sample.feature 文件中定义的所有其他场景,如下所示:

$ behave sample.feature --tags=ninja
...
Scenario Outline: this is a sample scenario -- @1.1
...
Scenario Outline: this is a sample scenario -- @1.2
...

请注意,每个子案例执行的行为 "marks",即执行日志中的 @1.1@1.2

我想知道我是否可以 "sharp" 并使用 behave 仅执行给定标签的一个(或一个子集)子案例。我尝试了以下方法,但没有成功(即两个子案例都被执行,而不仅仅是第二个):

$ behave sample.feature --tags=ninja,1.2

这可能吗?请问有什么方法可以帮助吗?

是的,一个Scenario Outline (Examples)中可以只执行一行,首先需要在标签中定义一个占位符到特征文件中,例如:
@test.row<row.id> Reference in Behave

之后,执行:

behave example.feature -t @test.row1.2 -- run only the row: 2 with this tag.

也可以创建几个示例,如下所示:

    Examples:
      | param1 | param2 | param3 |
      |     10 |      4 |      9 | 
      |     20 |      8 |     23 |
    Examples:
      | param1 | param2 | param3 |
      |     30 |     12 |      1 | 
      |     40 |     13 |     45 |
      |     50 |     14 |     49 | 
      |     60 |     15 |     13 |

而且,

behave example.feature -t @test.row2.4 -- run only the row: 4 in the second examples with this tag:

      |     60 |     15 |     13 |