Cucumber语法之Gherkin

Cucumber语法之Gherkin昨晚写完这篇文章已经 9 点多了 下楼去觅食 天空忽然洋洋洒洒飘起了大片大片的雪花 像个调皮的姑娘 被风裹着扭来扭去 我也满心欢喜 早晨一屁股从床上爬起来 掀开窗 原以为会是一片白雪皑皑 可

Cucumber语法之Gherkin
昨晚写完这篇文章已经9点多了,下楼去觅食,天空忽然洋洋洒洒飘起了大片大片的雪花,像个调皮的姑娘,被风裹着扭来扭去,我也满心欢喜。早晨一屁股从床上爬起来,掀开窗,原以为会是一片白雪皑皑。可惜,干净的像什么都没发生过一样。美好总是短暂的!还是继续我们的正题。

Cucumber是一个自动化测试工具,那它使用的程序语言是什么呢?

Cucumber是一个命令行工具,也是一个解释程序,就像ruby命令执行解释.rb文件里的ruby代码一样,Cucumber用来执行解释.feature文件中的Gherkin代码。因此,要学好Cucumber,就要学好Gherkin语法。

Gherkin文件使用’.feature’作为扩展名,用自然语言描述。Gherkin包含以下关键字:

Background 

Scenario 

Given 

When 

Then 

And 

But 

*

Scenario Outline  

Examples

  • Gherkin可以支持多种自然语言,这里我们使用英语。如果选择其他语言,只需要在执行cucumber命令时携带language code参数,例如日语:

      $ cucumber —il8n ja。

  • 同一个.feature文件里必须使用同一种语言。



(1).关键字 – Feature

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

Feature: feature description  In order to 
   
      As a 
    
       I want 
      
     
   

但是Cucumber并不关心这些具体的描述,其作用类似于注释,仅仅为了便于沟通交流(描述内容中不可以包含Gherkin关键字)。

  • 关键字后面的描述属于Gherkin语法的一部分,不会被cucumber解释并执行,但是会作为一种文件形式呈献给利益相关者。
  • 注释一般是面向程序员或者测试人员自己的,有助于理解代码。

(2).关键字 – Scenario

一个feature可以包含多个Scenario,每一个Scenario都是一个独立可执行的Test case。换言之,每个Scenario就是该feature的一个测试场景。

Scenario关键字之后可以加上对该Scenario的简单描述(描述内容中不可以包含Gherkin关键字)。

Scenario: Add two numbers

(3).关键字 – Given、When、Then、And和But

在Gherkin语法里,Given、When、Then、And和But用来指示一个Scenario中的step:

– Given:指测试所需要的前提条件 

– When:触发被测试件的执行步骤

– Then:执行步骤所期待的结果 

– And / But:用来连接Given的多个条件,When的多个步骤,或者Then的多个期待结果

以上期的加法计算器为例:

Scenario: Add two numbers  Given the input "2+2"  When the calculator is run  Then the output should be “4"

(4). 关键字 – Background

Background就是将.feature文件中多个scenario的公共step单独列出来。这样,一旦有改动,只需要在Background中进行修改,不用逐一修改每个scenario。

Background必须置于所有scenario之前。在运行时,Background中的步骤会和之前一样在每个scenario起始处被执行。

Background关键字并不是必选项,它的存在是为了增加scenario的可读性。下面两幅图分别为采用background前后的例子,大家可以体会一下:

Cucumber语法之Gherkin
Cucumber语法之Gherkin



(5). 关键字 – Scenario Outline 和 Examples

有时候,多个Scenario具有相同的执行步骤和期待结果,只是测试数据不相同,多次重复会显得乏味且缺乏重点。这时候就可以用Scenario Outline和Examples来存储这些数据。

下图是使用Scenario Outline前后的例子:

Cucumber语法之Gherkin

两个Scenario具有相同的步骤和结果,是不是乍一眼让人看得云里雾里?如果改成下面的形式呢?

Cucumber语法之Gherkin

Scenario Outline和Examples是一个组合,不能单独使用。Scenario Outline中用” ”作为占位符,执行时,cucumber会用Examples表中的值来替换占位符.


那么问题来了,为什么第一幅图有2个Scenario,而第二幅图只有1个Scenario呢?

(6). 关键字  – *

一些人觉得Given、When、Then、And和But关键字很啰嗦,所以喜欢用星号*来代替这些关键字。其实我个人是不建议的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220981.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:11
下一篇 2026年3月17日 下午7:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号