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

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

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

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

Feature

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 descriptionIn order to <meet some goal> As a <type of stakeholder>I want <a feature>

但是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 numbersGiven the input "2+2"When the calculator is runThen the output should be “4"

(4). 关键字 - Background

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

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

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


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

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

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

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

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

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

实际上,执行时,cucumber会将Examples中的每一行转换一个Scenario。所以第二幅图仍然是2个Scenario。

(6). 关键字  - *

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

Cucumber语法之Gherkin相关推荐

  1. Cucumber之二Gherkin语言学习

    在本教程中,我们将向您介绍Gherkin - BDD语言(业务驱动开发).我们将尽力详细回答这些问题 原文点击这里 免费英语视频教程可见微信公众号:[软测小生]里面,请关注公号更新相关文章和视频资源. ...

  2. 自动化测试框架cucumber_基于Cucumber和Testng的WebUI自动化测试方法与流程

    本发明涉及计算机技术领域,具体的说是基于Cucumber和Testng的WebUI自动化测试方法. 背景技术: 行为驱动测试方法已经在敏捷开发模式中普遍使用,通过使用标准化的语言将客户需求人员.开发人 ...

  3. appium怎么测试ios_使用Appium,Cucumber和Serenity测试iOS应用程序—质量秘诀

    appium怎么测试ios iOS设备仍占据着移动市场的重要份额,占全球销售额的22%. 随着许多忠实的客户回来购买新的Apple产品,对iOS应用程序的需求也很大. 在本文中,我们将着眼于确保通过A ...

  4. 清洁代码_清洁单元测试

    清洁代码 编写使用JUnit和某些模拟库的"单元测试"测试很容易. 即使测试甚至不是单元测试并提供可疑的价值,它们也可能产生使某些涉众满意的代码覆盖范围. 编写单元测试(在理论上是 ...

  5. 流行的软件测试工具介绍

    这篇文章主要介绍了流行的软件测试工具介绍,需要的朋友可以参考下 网络工具ATC 主页 http://facebook.github.io/augmented-traffic-control/ 代码托管 ...

  6. 作为多年 PHP 的开发者,在使用了 Go 语言之后......

    Go 是一种功能强大的编程语言,具有独特的功能组合.而 PHP 是在服务器端执行的脚本语言,与 C 语言类似,是常用的网站编程语言,同时适用于所有微服务.小型.中型乃至大型应用程序.对于开发者而言,两 ...

  7. 行为驱动开发BDD和Cucunber简介

    测试驱动开发(TDD) 1.测试驱动开发,即Test-Driven Development(TDD),测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前 ...

  8. 您应该遵循的15个UI测试自动化最佳实践(上)

    本文转载自晨小菜订阅号,感谢大佬的分享 我们知道,在过去二十年UI端的自动化测试一直是我们项目上做自动化测试的重点.随着敏捷的发展,慢慢的越来越多人开始诟病UI自动化测试,觉得在UI端做自动化其稳定性 ...

  9. Gherkin语法详解之DataTable(三)

    1.DataTable作为步骤的参数可以方便地指定更大的数据集 2.数据表的第一行总是标题行,我们在其中为每个列指定标题.数据表中的所有其他行都是数据行,其中包含将被应用程序. 3.数据表将作为最后一 ...

最新文章

  1. Linq学习from let where子句
  2. 计算机等级保护2.0标准,网络安全等级保护2.0标准情况-马力.pdf
  3. 恕我直言,90% 的应用场景都不需要用WebAssembly!
  4. 使用Leopard Jdbc
  5. SpringBoot整合Redis集群版本问题
  6. 抖音张一鸣:我的大学四年收获及工作感悟
  7. C# 匿名方法及Lambda表达式
  8. vmware虚拟机i copied it 和 i moved it的区别
  9. #C++初学记录(算法测试2019/5/5)(深度搜索)
  10. 由内而外 多项国产自主先进设计
  11. 设置win10保护色
  12. 图片转化word文档 在线免费转换
  13. CentOS8桌面环境打开终端
  14. 今日头条阅读量怎么刷_揭露头条刷阅读量内幕:怎么刷的今日头条阅读量
  15. python画极坐标图_Python matplotlib绘制极坐标图
  16. python写后端提供api_python写后端api
  17. kingcms php,KingCMS php版网站标签模版制作教程(二)
  18. 工程项目失败案例_失败工程
  19. GUVV-T20GD-U 太阳光紫外线传感器TO-39U韩国GENICOM光电二极管杀菌灯监控
  20. (复习)基础算法--搜索--深入训练(USACO-Feb08、WOW模拟赛Day2-T4、USACO-Dec13、CTSC-1999)

热门文章

  1. v-model和v-bind的区别
  2. SpringBoot使用AOP,PointCut详解
  3. android手机模拟屏幕点击
  4. webstorm破解版下载
  5. 最新资讯:浩辰CAD机械2013软件将于6月强势推出
  6. 如何把pdf转换成word软件在线
  7. [python] 机器学习 随机森林算法RandomForestRegressor
  8. DDoS攻击与防范策略
  9. TFS 强制取消锁定文件
  10. SOAP Web Services 简介