Cucumber 标签复用场景大纲实践指南
本文介绍如何在Cucumber+SpringBoot(Java)项目中,利用场景标签(@hotel、@car)配合ScenarioOutline的Examples表,实现同一业务流程(如搜索)在多个网站(如hotels.com、cars.com)间高效复用,避免代码重复。

本文介绍如何在 Cucumber + Spring Boot(Java)项目中,利用场景标签(@hotel、@car)配合 Scenario Outline 的 Examples 表,实现同一业务流程(如搜索)在多个网站(如 hotels.com、cars.com)间高效复用,避免代码重复。
本文介绍如何在 Cucumber + Spring Boot(Java)项目中,利用场景标签(@hotel、@car)配合 Scenario Outline 的 Examples 表,实现同一业务流程(如搜索)在多个网站(如 hotels.com、cars.com)间高效复用,避免代码重复。
在 Cucumber 测试自动化中,当需对多个相似站点(如 hotels.com 和 cars.com)执行相同业务逻辑(例如搜索功能)但使用不同测试数据时,最佳实践是复用 Scenario Outline,通过 Cucumber 标签(Tags)控制数据集的激活范围,而非复制整个 Feature 文件或维护多套 Gherkin 脚本。
具体做法如下:
- 为每个站点的数据块添加专属标签(如 @hotel、@car),置于 Examples 表上方;
- 在运行时,通过 Maven 或 IDE 指定 --tags "@hotel" 或 --tags "@car",仅执行对应数据集;
- 保持 Step Definition 完全通用,无需修改——Cucumber 自动将匹配标签的 Examples 行注入当前 Scenario Outline 实例。
✅ 正确的 .feature 文件示例:
Feature: Search
@smoke @search
Scenario Outline: I want to search for products
Given I enter "" as a keyword to a search field
Then I should see search results page
Then I should see at least results containing ""
@hotel
Examples:
| keyword | count |
| hotel | 3 |
@car
Examples:
| keyword | count |
| cars | 3 | ? 运行方式(Maven):
# 仅执行 hotels.com 相关数据 mvn test -Dcucumber.filter.tags="@hotel" # 仅执行 cars.com 相关数据 mvn test -Dcucumber.filter.tags="@car" # 同时运行两个站点(用 OR 逻辑) mvn test -Dcucumber.filter.tags="@hotel or @car"
⚠️ 注意事项:
- 标签必须紧邻 Examples 行上方,且独占一行;
- 同一 Scenario Outline 下可定义多个带不同标签的 Examples 块,Cucumber 会按需加载;
- 确保 cucumber-junit-platform-engine(或对应 runner)版本 ≥ 7.0,以完整支持 @tagged Examples 语法;
- 若使用 Spring Boot 集成,建议在 @CucumberContextConfiguration 类中统一管理 WebDriver、Base URL 等上下文——可通过 @Before("@hotel") Hook 动态切换 baseUrl = "https://www.hotels.com",进一步解耦环境配置。
这种设计兼顾了可维护性与可扩展性:新增站点(如 @flight)只需追加带标签的 Examples 块,无需改动 Gherkin 结构或 Java 步骤逻辑,真正实现“一次编写,多站复用”。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。
Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,













