Gherkin(小黄瓜,读“哥kin”)是BDD的领域特定语言(DSL),对应的软件框架是Cucumber(黄瓜)。
关键字
首要关键字:
Feature
Rule (as of Gherkin 6)
Example (or Scenario)
Given, When, Then, And, But for steps (or *)
Background
Scenario Outline (or Scenario Template)
Examples (or Scenarios)
次要关键字:
""" (Doc Strings)
| (Data Tables)
@ (Tags)
# (Comments)
注释
Gherkin只支持行注释,注释行开头使用“#”符号,#符号前可以有多个空格。
缩进
可以使用空格和tab进行缩进,建议使用两个空格。
中文支持
Gherkin支持多种语言,在文件头写入注释 # language: zh-CN表示使用中文书写。下面是关键字的中英文对照:
英文关键字 | 中文 |
---|---|
featur | 功能 |
background | 背景 |
scenario | 场景、剧本 |
scenarioOutline | 场景大纲 |
examples | 例子 |
given | *、假设、假如、假定 |
when | *、当 |
then | *、那么 |
and | *、而且、并且、同时 |
but | *、但是 |
rule | 规则 |
简单示例
下面是简单的示例:
1 |
|
Feature
Feature关键字是软件功能的高层描述,用于组织相关场景。一个Gherkin文档必须以Feature:开头,然后是对这个功能的描述和说明,Feature不会被测试框架解释,主要用于说明。
Feature后面可以是Background、Rule、Example或者ScenarioOutline。
在Feature可以增加tag,用于跨文件结构的标记。
Scenario/Example
场景或示例用于说明业务规则,包含一系列的步骤。
场景可以包含任意多的步骤,但建议包含3-5个步骤。一个示例也是一个测试,所有示例构成系统的可测试规格。
Steps
示例或者场景中包括步骤,这些步骤包括Given、When、Then、And和But。
步骤关键字不用于执行时的文字判断,所以,步骤不能有相同的文字定义。下面的步骤会被认为是重复的:
1 | Given there is money in my account |
这个约束是我们使用更精确的语言进行描述:
1 | Given my account has a balance of £430 |
Background
如果若干场景的起始条件相同,可以使用Background简化功能描述。Background 在每个场景执行前开始,但晚于任何Before钩子。
Scenario Outline
当有若干场景,只是输入参数不同时,可以使用Scenario Outline。
1 | 场景: 正确的作答1 |
上面的场景可以简化为:
1 | 场景大纲: 正确作答 |
Step参数
当需要输入文档数据时,可以使用 “””或者```作为文档参数:
1 | 假如 张三背了一首诗 |
如果输入对象数组等格式化数据,可以使用DataTable。
1 | 假如 下面的用户存在: |