场景大纲是什么
Gherkin 用 Given/When/Then 描述行为;场景大纲(Scenario Outline)再加一张 Examples 表,把同一场景中变化的输入输出参数化——一行数据就是一条执行用例。适合业务规则矩阵:不同金额、不同等级、不同渠道的预期结果,写一次骨架、数据列成表格。
基本信息
| 关键字 | Feature、Scenario、Scenario Outline、Examples、Background、Tags |
|---|---|
| 占位符 | 步骤里用尖括号引用 Examples 列名,如 <金额> |
| Background | 放所有场景共用的前置步骤,减少重复 |
| Tags | 场景或示例级标签,驱动筛选执行 |
| 实现绑定 | Cucumber、Behave 等把步骤映射到代码逻辑 |
| 数据表 | Examples 每个列名必须与占位符逐字一致 |
最小示例
最小示例
Scenario Outline: 会员折扣
Given 用户等级为 <等级>
When 下单金额为 <金额> 元
Then 应付金额为 <应付> 元
Examples:
| 等级 | 金额 | 应付 |
| 普通 | 100 | 100 |
| 黄金 | 100 | 90 |典型使用场景
- 业务规则矩阵:输入组合映射到预期输出,一表打尽
- 验收标准直转自动化:产品与测试共写一张数据表
- 回归维护:增删一行数据即增删一条用例
- 文档价值:Examples 表本身就是规则说明
- 标签分层:给不同示例行打标签做分级执行
关键字与用途
| 关键字 | 用途 | 注意 |
|---|---|---|
| Feature | 功能文件入口 | 一段业务一个文件 |
| Scenario | 单场景描述 | 步骤过多时拆分 |
| Scenario Outline | 参数化场景模板 | 占位符与列名对齐 |
| Examples | 数据行集合 | 边界与空值也要列 |
| Background | 公共前置 | 保持简短,别藏逻辑 |
占位符与列名要逐字一致:拼写不同会导致步骤未替换或匹配失败,出错信息往往不直观。
数据行爆炸时换工具:复杂组合矩阵更适合代码级参数化(pytest 或 JUnit 5),Gherkin 保持业务可读性。
步骤写实现细节(点击第三个按钮)会让场景与界面强耦合:步骤应停在业务语言层,实现放到底层代码。