Gherkin Scenario 是什么
Gherkin 用 Feature、Scenario、Given-When-Then 描述系统行为:一个 Scenario 表达一条规则或一个典型示例,供业务与自动化共用。Given 描述前置状态,When 描述触发行为,Then 描述可观察的结果;标题与步骤用业务语言写,实现细节留给步骤定义层。场景语言与工具无关:Gherkin 文本可被 Cucumber 等工具解析执行,也可以只作为业务沟通的载体。
基本信息
| 文件约定 | .feature 文件,一个 Feature 下多个 Scenario |
|---|---|
| 核心关键词 | Feature、Scenario、Given、When、Then、And、Background |
| 参数化扩展 | Scenario Outline 配合 Examples 表驱动多组数据 |
| 配套工具 | Cucumber、Behave 等按步骤绑定代码 |
| 常见误用 | 把 Given 写成操作步骤而不是前置状态 |
典型使用场景
- 需求澄清:与业务共同把规则写成可评审的场景
- 自动化骨架:场景文件直接对接步骤定义执行
- 活文档:场景随产品演进维护,代替过时的说明文档
- 回归管理:按标签筛选场景组成回归集
- 三方评审:业务、开发、测试以场景为共同语言对齐边界
- 验收交付:场景通过与否作为验收依据之一
- 接口层验收:用同样的场景语言描述 API 行为,前后端共用一套验收口径
示例
示例
Feature: 会员折扣
Background:
Given 商品与会员数据已就绪
Scenario: 会员订单享 9 折
Given 用户是会员
And 订单金额为 200 元
When 提交订单
Then 应付金额为 180 元
# 标题写业务规则,步骤避免写按钮位置等实现细节
# 一个 Scenario 只讲一条规则,多组数据用 Scenario Outline关键词速查
| 关键词 | 作用 |
|---|---|
| Given | 建立前置状态与数据 |
| When | 描述被触发的行为 |
| Then | 断言可观察的结果 |
| And/But | 延续上一个关键词的语义 |
| Background | 多个场景共享的前置步骤 |
Scenario 标题用业务语言描述规则;步骤中避免写按钮位置等实现细节,业务人员才能参与评审。
一个 Scenario 只讲一条规则:规则多时拆成多个场景,或用 Scenario Outline 参数化同一规则的多组输入数据。