Cucumber入门之Gherkin

1.Gherkin简介:

Cucumber是一个解释程序,就像ruby命令执行解释 .rb文件里的Ruby代码一样,Cucumber用来执行解释 .feature文件里的Gehrkin代码。

2. 关键字:

当你编写一个feature文件的时候,会用到很多Gherkin语言里特定的关键字,主要包括下这面些:

  ? Feature

  ? Background

  ? Scenario

  ? Scenario outline

  ? Scenarios (or examples)

  ? Given

  ? When

  ? Then

  ? And (or but)

  ? | (用来定义表格)

  ? """ (定义多行字符串)

  ? # (注释)

  我们可以在关键字后面写任何我们想写的东西。关键字Given, When, Then, And 和 But用来指示一个场景中的步骤。

每一个feature文件必须以关键字Feature开始,且紧跟着一个冒号和一个描述。这个描述可以在很多行上,但一般来说比较好的模式是写一句简短的概述,紧接着在下一行对此进行一个简明的描述。比如:

Feature: Book flight

In order to book a flight

As a user

I want to find the cheapest flight

当然有一点需要指出的是,Cucumber并不关心你在这里写了什么。它只是简单的忽略这些代码直到它碰到关键字Background, Scenario 和 Scenario Outline. 我们写这些的目的仅仅是为了沟通和交流。

3. Scenarios/Steps/The cucumber Command

  1. Scenario:一个feature文件里面可以有很多个Scenario,一个Scenario就是一个具体的你想要测试的功能点,一个Scenario又是由很多个步骤(Steps)组成的。Scenario明确的描述我们期望的程序的行为,且方便不同职位的人员进行沟通,因为你只要看到一个Scenario,很容易就知道它想做什么。

一个Scenario的第一部分是Scenario关键字后面紧跟一个冒号和一个对应该场景的描述。如下:

Feature: Book flight

In order to book a flight

As a user

I want to find the cheapest flight

Scenario: Successful booking flight

  2. Steps:每个Scenario都可以使用任意数量的步骤来描述任何发生在该场景里的事情,一个步骤通常是一行单独的文本并且由以下这些关键字开头:Given,When,Then,And and But. 如下:(注意:步骤后面不需要跟冒号)

Feature: Book flight

In order to book a flight

As a user

I want to find the cheapest flight

Scenario: Successful booking flight

Given I visit a website to book flight

  3. The cucumber Command: 一旦我们写好了一个feature文件,我们就可以使用 命令来运行它。如果命令后不跟任何东西的话,那么它会执行所有的.feature文件。如果我们只想运行某一个.feature文件,我们可以使用命令

4.Given/When/Then/And/But

  a) Given:表示scenario中我们接受/认为是真的东西,它将为后面的when(事件/操作)和Then(输出)提供背景/上下文;如:Given I visit a website

  b)When:表示scenario中的事件或动作;如:When I click the submit button.; 一般我们喜欢在一个scenario中只有一个事件或动作,因为这样容易理解scenario的目的且容易找到错误当失败的时候;

  c) Then:表示预期的输出;

  d) And/ But: 我们可以使用And 和 But 作为Given/When/Then的同义词,如:” ” 这里的And就是Given的意思;再如:”,” 这里的But就是Then的意思;

例:

  Scenario: transfer money (declarative)

  Given I have $100 inchecking

  And I have $20 insavings

  When I transfer $15 from checking to savings

  Then I should have $85 inchecking

  And I should have $35 insavings

5. Tags

  正如前面提到的一个.feature 文件里面可以有很多scenario组成。如果我们运行了一个包含有很多个scenario的feature文件时,它会执行这个文件里面所有的 scenario;但是有的时候我们可能只想运行某一个/些特别的scenario时,这时我们可以使用Tags;

在Cucumber里Tag看上去和Ruby的实例变量比较像。如@wip, @foo…可以在Feature或Scenario关键字前给feature或scenario添加任意数量的tags,如:

  @approved @book_flight

  Feature: Book flight

  @wip

  Scenario: Book a flight on web

  一个Scenario会继承指定给Feature的tags,所以在上面的例子中,Scenario有三个tags:@approved @book_flight @wip.  然后我们就可以使用命令:cucumber  --tags tag_name来运行我们想运行的那部分Scenario.如:cucumber --tags @wip

  此外,--tags还支持复杂的表示示,包括: AND,OR和NOT,如下:

  cucumber --tags  (foo,)bar

  #@foo || @bar        运行所有包含@foo OR @bar的scenarios

  cucumber --tags @foo --tags @bar

  # @foo && @bar   运行所有包含@foo AND @bar的scenarios

  cucumber --tags [email protected]

  #[email protected]                  运行所有不包含@dev的scenario

  cucumber --tags @foo,[email protected] --tags @baz

  # (@foo || [email protected]) && @baz

(摘自http://www.cnblogs.com/puresoul/archive/2011/12/28/2305160.html)

时间: 2024-11-08 18:26:36

Cucumber入门之Gherkin的相关文章

Cucumber 入门一

(转自:http://www.cnblogs.com/jarodzz/archive/2012/07/02/2573014.html) 第一次看到Cucumber和BDD(Behavior Driven Development, 行为驱动开发),是在四年前.那时才開始工作,对软件測试工具相当着迷.仅仅要是开源的.免费的,我就一定要下载,安装,试用.有的工具用途单一.好懂(如Jmeter,Watir):有的工具,则涉及到一些软件领域的独有概念,不好懂,(如STAF,Cucumber).好懂的,我上

Cucumber入门之资源下载地址

Cucumber原生是用ruby开发的,现在提供java版下载链接 1.  Cucumber官网文档:https://cukes.info/docs/ 2. Cucumber mavn依赖包库:http://repo1.maven.org/maven2/info/cukes/ 3.  必备依赖包 a)       cucumber-core-1.2.2.jar  --核心包 b)       cucumber-html-0.2.3.jar       --html报告依赖 c)       cu

使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境

持续集成 持续集成究竟是什么呢?根据敏捷大师Martin Fowler的定义: 持续集成是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误.许多团队发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度. 只要是开发就有分工,哪怕是自己一个写也要分成多个模块.随着项目越来越大,模块也越来越多,各个模块是否可以征程协作就成了问题,有了持续集成,可以有如下好处: 持

Cucumber 之Gherkin

1.Gherkin简介: Cucumber是一个解释程序,就像ruby命令执行解释 .rb文件里的Ruby代码一样,Cucumber用来执行解释 .feature文件里的Gehrkin代码. 2. 关键字: 当你编写一个feature文件的时候,会用到很多Gherkin语言里特定的关键字,主要包括下这面些: ? Feature ? Background ? Scenario ? Scenario outline ? Scenarios (or examples) ? Given ? When ?

Django REST framework入门教程1:序列化

入门介绍 本教程将涵盖一个简单的PasteBin1代码高亮的Web API.整个过程,将逐一介绍REST framework的各个组成部件,让你全面理解,组件之间是如何整合的. 本教程有点深度,所以在开始之前,你也许会需要几片曲奇饼,一杯你最爱的饮品.如果你只是想有个快速的鸟瞰,也许你该掉头去看看快速入门文档. 留意: 本教材的代码可以在Github中找到:tomchristie/rest-framework-tutorial.完整的代码部署在线上的沙盒版本(sand version)里,用作测

苹果Swift编程语言入门教程【中文版】

目录 1 简介 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 7 枚举与结构 1 简介 Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的功能来是的编程更加简 单.灵活和有趣.界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向. Swift已经存在了多年.Apple基于已有的编译器.调试器.框架作为其基础架构.通过ARC(Aut

Apple Swift编程语言入门中文教程

Apple Swift编程语言入门教程 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&OSX开发有所帮助. Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.S

Apple Swift编程语言入门教程

目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&OSX开发有所帮助. Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的

Cucumber测试驱动开发

Cucumber是一种BDD实践开发工具,属于敏捷开发的组成部分. 在敏捷开发中,对用户进行需求分析时,不是像传统的P&D的开发方式,首先编写大量的用户需求分析文档,而是通过一个个User Story来进行用户需求的分析. User Story的编写,也就是Cucumber的Gherkin编写.由一个个feature组成.User Story的编写应该符合SMART原则,即简明详细.可测量.可以在一个迭代内实现.有商业价值,并且可测试. BDD开发流程 首先应该在编写具体的代码前,先编写测试文件