Cucumber 之 Gherkin 语法

本贴最后更新于 1389 天前,其中的信息可能已经斗转星移

1、什么是Gherkin

Gherkin是一种简单的英语文本语言, 它有助于工具--Cucumber解释和执行测试脚本。一个完整的测试脚本是由多个step组成的,step即最小单元。多个step组成一个Scenario,即一个完整的测试case。多个Scenario组成一个Feature,即一组相关的测试case

2、关键字

主要关键字:

还有一些辅助关键字:

2.1、 Feature

每一个.feature文件必须以关键字Feature开始,Feature关键字之后可以添加该feature的描述(这部分是可选的)。

Feature: 打开某东搜索手机加入购物车balabala

这些描述行会在运行时被Cucumber忽略,也就是说Cucumber并不care,但可用于报告(它们被包括在官方HTML格式器之类的报告工具中)

2.2、Rule

Rule为非必要关键字,主要用作测试用例分组,例如:

Feature: Highlander Rule: There can be only One Scenario: Only One -- More than one alive Given there are 3 ninjas And there are more than one ninja alive When 2 ninjas meet, they will fight Then one ninja dies (but not me) And there is one ninja less alive Scenario: Only One -- One alive Given there is only 1 ninja alive Then he (or she) will live forever ;-) Rule: There can be Two (in some cases) Scenario: Two -- Dead and Reborn as Phoenix

在这个例子中,Rule: There can be only One下有两个ScenarioRule: There can be Two (in some cases)下只有一个Scenario

翻译来过:Only One -- More than one aliveOnly One -- One alive属于同一组,写代码的时候确保两个用例都遵循Only One规则,但是Cucumber并不会检查。

说白了类似于注释,告诉别人这两个测试用例遵循了某种规则。

2.3、Example(或Scenario

ExampleScenario一样表示一个测试场景。

2.4、GivenWhenThenAndBut步骤(或*

GivenWhenThen在上一篇中已经介绍,这里介绍下AndBut

AndBut是为了替代连续GivenWhenThen。其中But一般用作不期望的断言结果。

替换之后代码中的注解也要改成对应的@And@But

Scenario: Multiple Givens Given one thing Given another thing Given yet another thing When I open my eyes Then I should see something Then I shouldn't see something else 改造: Scenario: Multiple Givens Given one thing And another thing And yet another thing When I open my eyes Then I should see something But I shouldn't see something else

2.5、Background

当在同一个Feature里有多个Scenario有相同Given的时候,可以使用Background将这些Given抽到一起,简单来说就是抽取共性,让feature更简洁。例如:

Feature: 打开某东搜索手机加入购物车balabala Scenario: 手机加入购物车 Given 打开某东首页 When 搜索 小米手机 Then 是否显示 小米10Pro Scenario: 手机加入购物车 Given 打开某东首页 When 搜索 苹果手机 Then 是否显示 iphone12 使用Background后: Feature: 打开某东搜索手机加入购物车balabala Background: Given 打开某东首页 Scenario: 手机加入购物车 When 搜索 小米手机 Then 是否显示 小米10Pro Scenario: 手机加入购物车 When 搜索 苹果手机 Then 是否显示 iphone12

2.6、Scenario Outline(或Scenario Template)、Examples(或Scenarios

Scenario Outline一般和Examples配合使用实现参数化,至于如何实现参数化,我们留到下一章讨论。

  • BDD
    5 引用 • 2 关注
  • Java
    60 引用 • 501 回帖 • 2 关注
回帖
请输入回帖内容 ...