Cucumber 之 Gherkin 语法

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

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 引用 • 1 关注
  • Java
    60 引用 • 501 回帖 • 1 关注
回帖
请输入回帖内容 ...