空愁居@十万图纸.军史资料
Would you like to react to this message? Create an account in a few clicks or log in to continue.

cucumber介绍

向下

cucumber介绍 Empty cucumber介绍

帖子 由 Admin 周六 四月 21, 2012 12:30 am

很多人在做自动化测试的时候会产生一个疑问,如何让我们的test case和script产生联系?运行一轮自动化脚本以后,如何告诉看不懂script的客户或者开发,你的自动化测试都做了哪些事情?下面将会给大家介绍一款新的工具:cucumber(黄瓜)。
cucumber是一款基于BDD的测试工具,它一方面通过文字描述测试行为,告诉开发和客户test case是如何进行的,另一方面通过关键字驱动
和正则表达式匹配告诉scripts去做哪些事情,在运行自动化测试结束以后,会给出详细的report告
诉用户和测试人员,当前测试有哪些步骤,哪些场景,哪些行为得到了执行,多少成功,多少失败,总共耗时多少,甚至一个表格中的一个测试数据没有执行到,都

会以显著的颜色标注出test case的第几行出错,对应的script第几行出错。如此以来,无论是不懂代码的客户还是脚本编写人员都可以直观的寻
找自己想要的结果。
cucumber的官方网站是http://cukes.info/
由于它的实现语言是ruby,所以它也是rubygems庞大家族的一份子,安装命令很简单:gem
install cucumber。目前cucumber可以和诸多语言开发的程序进行工作,比如ruby,java,.net,flex等等开发的程
序进行工作,并且支 持多达30多种语言的描述方式。
cucumber的识别文件是.feature格式的,当然它可以阅读文本文件,使用.txt文件保存场景文件也可以识别,当然我们建议使
用.feature格式的文件以便它更快的解析。feature文件中的文字描述必须以cucumber指定的关键字开头,如果不加关键字则默认为注释。
文件的默认语言是English,当然如果你想用中文来编写用例,则只需要在feature文件的首行加上#
language: zh-CN,如果你的文件想用法语编写,则加# language: fr 诸如此类,更多语言可以运行cucumber
–i18n help查看。我们先给一个简单的例子:
Feature: Search
In order to learn more
As an information seeker
I want to find more information
Scenario: Find what I’m looking for
Given I am on the Google search page
When I search for “cucumber github”
Then I should see
“”"
written in Ruby
“”"
上面的代码是Feature文件的一个例子,红色表示文件的开头,注意这里必须以Feature开头。绿色部分

由于没有关键字,会被认为是注释部分不执行,但是会打印在report上。蓝色部分是我们test case的主体部分,每一个scenario代表着
一条case,Scenario:后面的部分是当前case要做什么的描述。Given,When,Then这三个关键字描述的分别是case的前置步

骤,具体操作,期望结果。那么这条case的解读方式应该是:首先我打开谷歌的搜索页面,当我搜索“cucumber github”,这时我应该看到
“witten in Ruby”的搜索结果。这个不难理解吧?如果这三个关键字不能完整表达你的描述,可以加And,比如:
Given ****
And ****
When ****
And ****
Then ****
保存好Feature文件以后,那么这部分是给不懂代码的客户或者手工测试人员去阅读的,这个和平常设计的test case没有太大差别,最多就是前面加几个关键字。下面给大家介绍几个cucumber最常用的关键字,分别是:
Feature:文件开头的关键字,不加的话cucumber无法识别该文件。
Background:这个关键字表示下面描述的step会在每个Scenario运行之前运行一次。
Scenario:场景关键字,也是每个test case的单位
Scenario Outline:该关键字必须和下面的Examples或者Scenarios结合起来用,后面会说到具体用法。
Examples/Scenarios:这两个关键字下面通常跟的是一个table,里面存放各种测试数据,我们会在运行step的时候调用里面的数据作为参数传到script中。
Given,When,Then,And,But这几个关键字和上面的关键字有所不同,它们不会影响
Feature文件运行的顺序,只是起到帮助阅读的作用。Scenario和Scenario
Outline都是test case的单位,他们的区别在于,Scenario执行的时候,是从Given开始,到Then结束一轮测试,而
Scenario Outline则会根据下面跟的Examples或者Scenarios中的table的行数来决定执行多少次从Given到
Then的循环,比如
Examples下面的table有4行,那么Scenario Outline会执行4次从Given到Then的循环(table首行默认为列名,
不包含在4次之内)。他们各有各的好处,读者可以根据自己想做的事情 自己体会。
当掌握了关键字的特性以后,大家就可以自己尝试编写一个Feature文件,然后在命令行下面运行一下,运行的命令是:cucumber Feature文件名。比如Feature文件名是test.feature,命令是cucumber test.feature,记住要在test.feature保存的路径下运行,否则文件名前面要加具体路径。如果想看看report是什么样子,可以运行命令:cucumber -f pretty -f html -o report.html test.feature。如果提示warning,看不到报告的颜色,可以根据warning的提示到对应地址下载工具安装。
今天暂时写到这里,后面会写如何编写对应的脚本,以及和自动化测试工具watir,selenium等结合使用。大家有问题可以在下面提,我会一一解答。
Admin
Admin
Admin

帖子数 : 641
注册日期 : 08-03-25

http://kcjun.longluntan.cn

返回页首 向下

cucumber介绍 Empty 回复: cucumber介绍

帖子 由 Admin 周六 四月 21, 2012 12:30 am

Admin
Admin
Admin

帖子数 : 641
注册日期 : 08-03-25

http://kcjun.longluntan.cn

返回页首 向下

cucumber介绍 Empty 回复: cucumber介绍

帖子 由 Admin 周六 四月 21, 2012 12:30 am

Cucumber入门之Gherkin
作者:puresoul | 出处:博客园 | 2011/12/28 17:15:27 | 阅读4次

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文件,我们就可以使用 cucumber
命令来运行它。如果cucumber命令后不跟任何东西的话,那么它会执行所有的.feature文件。如果我们只想运行某一个.feature文件,我
们可以使用命令cucumber features\feature_name



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的同义词,如:”Given x, And y,”
这里的And就是Given的意思;再如:”Then x, But not y,” 这里的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 ~@dev

  #!@dev 运行所有不包含@dev的scenario



  cucumber --tags @foo,~@bar --tags @baz

  # (@foo || !@bar) && @baz
Admin
Admin
Admin

帖子数 : 641
注册日期 : 08-03-25

http://kcjun.longluntan.cn

返回页首 向下

返回页首


 
您在这个论坛的权限:
不能在这个论坛回复主题