You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提前获取Cucumber指定标签匹配的待执行场景与标签列表?

提前获取Cucumber指定标签匹配的场景列表方案

方法一:使用Cucumber Dry-Run模式

这是最简单的原生方案,无需额外编码,直接利用Cucumber的dry-run参数遍历匹配场景但不执行测试步骤:

  • 执行命令:
    mvn clean test -Dcucumber.filter.tags='@Regression and @login' -Dcucumber.execution.dry-run=true
    
  • 效果:控制台会输出所有符合标签条件的场景名称、所属Feature文件路径及标签集合,全程不会运行测试步骤,速度极快。
  • 进阶:如果需要保存结果到文件,可重定向输出:
    mvn clean test -Dcucumber.filter.tags='@Regression and @login' -Dcucumber.execution.dry-run=true > test-scenarios-list.txt
    

方法二:自定义Cucumber插件(定制化输出)

如果需要特定格式的输出(如CSV、结构化文本),可以编写自定义插件捕获场景信息:

  1. 编写插件类(Cucumber 7+版本示例):
    import io.cucumber.plugin.EventListener;
    import io.cucumber.plugin.event.EventPublisher;
    import io.cucumber.plugin.event.Scenario;
    import io.cucumber.plugin.event.ScenarioStarted;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class ScenarioListReporter implements EventListener {
        private FileWriter writer;
    
        @Override
        public void setEventPublisher(EventPublisher publisher) {
            publisher.registerHandlerFor(ScenarioStarted.class, this::onScenarioStarted);
            try {
                writer = new FileWriter("scenarios-to-run.txt");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private void onScenarioStarted(ScenarioStarted event) {
            Scenario scenario = event.getScenario();
            try {
                writer.write(String.format("Feature 文件: %s\n场景名称: %s\n关联标签: %s\n---\n",
                        scenario.getUri(), scenario.getName(), scenario.getTags()));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void close() {
            try {
                if (writer != null) writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  2. 在Maven的Surefire插件中配置该插件:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
            <systemPropertyVariables>
                <cucumber.filter.tags>@Regression and @login</cucumber.filter.tags>
                <cucumber.plugin>com.yourpackage.ScenarioListReporter</cucumber.plugin>
                <!-- 可选:结合dry-run避免执行步骤 -->
                <cucumber.execution.dry-run>true</cucumber.execution.dry-run>
            </systemPropertyVariables>
        </configuration>
    </plugin>
    
  3. 运行mvn clean test,会在项目根目录生成scenarios-to-run.txt,包含所有匹配场景的详细信息。

方法三:利用Cucumber JSON报告解析

结合dry-run和JSON插件生成结构化报告,再解析提取信息:

  • 生成JSON报告命令:
    mvn clean test -Dcucumber.filter.tags='@Regression and @login' -Dcucumber.execution.dry-run=true -Dcucumber.plugin=json:target/cucumber-scenarios.json
    
  • 解析方式:用Python、Java或其他工具读取target/cucumber-scenarios.json,提取elements数组中的name(场景名)、tags(标签)、uri(Feature路径)等字段。

内容的提问来源于stack exchange,提问作者Cristian Plata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:50:25