如何仅运行Cucumber场景大纲中的指定示例行?
Cucumber 筛选Scenario Outline特定示例行的方法
当然可以不用拆分场景大纲,Cucumber提供了多种运行时过滤示例行的方式,以下是几种实用方法:
1. 给单个示例行加标签
直接给目标示例行添加专属标签,运行时通过标签筛选:
Scenario Outline: eating Given there are <start> cucumbers When I eat <eat> cucumbers Then I should have <left> cucumbers Examples: | start | eat | left | @run-only-this | 12 | 5 | 7 | | 20 | 5 | 15 |
运行时指定标签(以Maven为例):
mvn test -Dcucumber.filter.tags="@run-only-this"
2. 通过示例名称/参数组合过滤
Cucumber会自动给每个示例生成包含参数的名称,你可以通过filter.name参数匹配这些名称:
# 匹配包含start=12的示例 mvn test -Dcucumber.filter.name=".*start 12.*" # 精准匹配参数组合(12、5、7)的示例 mvn test -Dcucumber.filter.name="eating.*12.*5.*7"
你也可以给Examples块自定义名称,让过滤更直观:
Scenario Outline: eating Given there are <start> cucumbers When I eat <eat> cucumbers Then I should have <left> cucumbers Examples: 初始12根的场景 | start | eat | left | | 12 | 5 | 7 | Examples: 初始20根的场景 | start | eat | left | | 20 | 5 | 15 |
然后通过自定义名称过滤:
mvn test -Dcucumber.filter.name="初始12根的场景"
3. 直接按列值过滤(部分版本支持)
部分新版Cucumber支持cucumber.filter.examples参数,直接通过列名和值筛选:
mvn test -Dcucumber.filter.examples="start=12"
这些方法都不用拆分场景大纲,比拆分后加@ignore标签更灵活高效。
内容的提问来源于stack exchange,提问作者vivek_ganesan
相关产品推荐
相关产品推荐

