`
yukang116
  • 浏览: 24248 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

行为驱动开发: Cucumber的目录结构和执行过程

阅读更多
行为驱动开发: Cucumber的目录结构和执行过程 (转载)
Cucumber是Ruby世界的BDD框架,开发人员主要与两类文件打交到,Feature文件和相应的Step文件。Feature文件是以 feature为后缀名的文件,以Given-When-Then的方式描述了系统的场景(scenarios)行为;Step文件为普通的Ruby文 件,Feature文件中的每个Given/When/Then步骤在Step文件中都有对应的Ruby执行代码,两类文件通过正则表达式相关联。笔者在 用Cucumber+Watir做回归测试时对Cucumber工程的目录结构执行过程进行了研究。

安装好Cucumber后,如果在终端直接执行cucumber命令,得到以下输出:



输出结果表明:cucumber期待当前目录下存在名为features的子目录。建好features文件夹后,重新执行cucumber命令,输出如下:



Cucumber运行成功,但由于features文件夹下没有任何内容,故得到上述输出结果。

网上大多数关于Cucumber的教程都建议采用以下目录结构,所有的文件(夹)都位于features文件夹下。



Feature文件(如test.feature)直接位于features文件夹下,可以为每个应用场景创建一个Feature文件;与 Feature文件对应的Step文件(如test.rb)位于step_definitions子文件夹下;同时,存在support子文件夹,其下的 env.rb文件为环境配置文件。在这样的目录结构条件下执行cucumber命令,会首先执行env.rb做前期准备工作,比如可以用Watir新建浏 览器窗口,然后Cucumber将test.rb文件读入内存,最后执行test.feature文件,当遇到Given/When/Then步骤 时,Cucumber将在test.rb中搜索是否有相应的step,如果有,则执行相应的Ruby代码。

这样的目录结构只是推荐的目录结构,笔者通过反复的试验得出了以下结论:对于Cucumber而言,除了顶层的features文件夹是强制性的之 外,其它目录结构都不是强制性的,Cucumber将对features文件夹下的所有内容进行扁平化(flatten)处理和首字母排序。具体来 说,Cucumber在运行时,首先将递归的执行features文件夹下的所有Ruby文件(其中则包括Step文件),然后通过相同的方式执行 Feature文件。但是,如果features文件夹下存在support子文件夹,并且support下有名为env.rb的文件,Cucumber 将首先执行该文件,然后执行support下的其它文件,再递归执行featues下的其它文件。

比如有如下Cucumber目录结构:




为了方便记录Cucumber运行时的文件执行顺序,在features文件夹下的所有Ruby文件中加上以下代码:

puts File.basename(__FILE__)

此行代码的作用是在一个Ruby文件执行时输出该文件的名字,此时执行cucumber命令,得到以下输出(部分)结果:



上图即为Ruby文件的执行顺序,可以看出,support文件夹下env.rb文件首先被执行,其次按照字母排序执行c.rb和d.rb;接下 来,Cucumber将features文件夹下的所用文件(夹)扁平化,并按字母顺序排序,从而先执行a.rb和b.rb,而由于other文件夹排在 step_definitions文件夹的前面,所以先执行other文件夹下的Ruby文件(也是按字母顺序执行:先f.rb,然后g.rb),最后执 行step_definitions下的e.rb。

当执行完所有Ruby文件后,Cucumber开始依次读取Feature文件,执行顺序也和前述一样,即: a.feature --> b.feature --> c.feature

笔者还发现,这些Ruby文件甚至可以位于features文件夹之外的任何地方,只是需要在位于features文件夹之内的Ruby文件中require一下,比如在env.rb中。

  • 大小: 6.6 KB
  • 大小: 6.7 KB
  • 大小: 6.4 KB
  • 大小: 10.9 KB
  • 大小: 2.9 KB
分享到:
评论

相关推荐

    Cucumber行为驱动开发指南(英文版本)

    Cucumber是一个行为驱动开发(Behavior Driven Development,...而《Cucumber行为驱动开发指南》这本书则为想要掌握Cucumber的读者提供了一条捷径,通过大量易懂的示例和实用的洞察,帮助读者成为更好的软件开发者。

    Cucumber 行为驱动开发指南 [(英)韦恩,(挪)赫勒索著]

    《Cucumber 行为驱动开发指南》是一本由(英)韦恩和(挪)赫勒索共同编著的专业书籍,专注于介绍行为驱动开发(Behavior Driven Development, BDD)这一现代软件开发方法论。BDD是一种将业务需求、测试和开发紧密...

    BDD开发之rspec和cucumber

    行为驱动开发(Behavior-Driven Development, BDD)是一种软件开发方法论,它结合了敏捷开发的思想和技术,如测试驱动开发(TDD)和领域驱动设计(DDD),以确保软件产品的功能符合最终用户的需求。BDD的主要目标是...

    The Cucumber Book

    《The Cucumber Book》是当前硅谷最流行的软件开发技术之一——行为驱动开发(Behavior-Driven Development,BDD)的重要读物。本书深入介绍了Cucumber这一工具的使用方法和哲学思想,旨在帮助开发人员和测试人员...

    cucumber jar包

    Cucumber 是一个自动化测试框架,尤其适用于行为驱动开发(BDD)。它允许非技术人员,如业务分析师和产品经理,使用自然语言编写测试规范,这些规范被称为特性文件。Cucumber 使用 Gherkin 语法,这是一种结构化的...

    tutorial-cucumber-calculator:Cucumber行为驱动开发的第一步

    【标题】:“Cucumber行为驱动开发的第一步:创建一个计算器示例” 在软件开发中,行为驱动开发(BDD)是一种以用户需求为中心的方法论,它强调通过可执行的自然语言描述来定义软件的行为。Cucumber是BDD的一个强大...

    自动化测试平台cucumber框架兼容APP,WEB,API

    Cucumber,一个强大的自动化测试框架,以其易读性和可维护性在软件开发领域备受推崇,尤其在集成测试和行为驱动开发(BDD)中扮演着关键角色。它不仅支持Web应用的测试,还能够应用于移动应用(APP)以及API接口的...

    TestNg_0920。自己练习关于selenium+java。数据驱动模式、页面对象模式、行为驱动开发的代码

    【TestNg_0920】是一个练习项目,主要涵盖了Selenium与Java的结合使用,以及数据驱动模式、页面对象模式和行为驱动开发(BDD)等关键概念。以下是这些知识点的详细说明: 1. **Selenium**:Selenium 是一个广泛使用...

    cucumber-jvm-template:Cucumber-JVM模板项目

    【Cucumber-JVM模板项目】是一个专为Java开发者设计的测试框架模板,旨在简化使用Cucumber-JVM和Selenium进行行为驱动开发(BDD)的起步过程。Cucumber-JVM是Cucumber测试框架的一个实现,它允许开发者用自然语言...

    CucumberConcepts:Cucumber概念

    Cucumber是一款功能强大的自动化测试工具,尤其适用于行为驱动开发(BDD)。在Java环境中,Cucumber可以帮助开发者、测试人员和非技术人员之间建立一种通用的语言,从而实现更有效的沟通和协作。下面将详细介绍...

    Cucumbercode:Cucumber代码上传

    Cucumber是一个自动化测试工具,主要用于行为驱动开发(BDD)。它允许开发者、业务分析师和测试人员使用自然语言(如Gherkin语法)来编写可执行的测试场景。在这个项目中,“Cucumbercode”可能包含了实现这些场景的...

    BDD_Sample_Tests:Cucumber(小Cucumber)

    总结来说,BDD_Sample_Tests项目是一个使用Cucumber和JavaScript进行行为驱动开发的示例。它演示了如何通过特性文件描述业务需求,然后用JavaScript实现这些需求,最后通过Cucumber进行自动化测试,确保软件功能符合...

    cucumber-eclipse-plugin-0.0.23-SNAPSHOT.zip

    Cucumber 是一个强大的自动化测试工具,它支持行为驱动开发(BDD)。在软件开发中,BDD 是一种方法论,它强调从用户的角度来描述软件的功能,使得非技术人员也能理解软件的行为。Cucumber 可以将这些描述转换为可...

    行为驱动开发(BDD)全面介绍-时牧敏捷 antlr-complete

    行为驱动开发(Behavior-Driven Development,简称BDD)是一种敏捷软件开发方法,它强调从用户的角度出发,通过明确的业务行为来定义系统需求,进而指导软件开发过程。BDD的核心在于促进开发者、测试者以及非技术...

    软件测试_cucumber交流.pdf

    在众多敏捷实践当中,行为驱动开发(Behavior Driven Development,简称BDD)是一种广受欢迎的技术,而Cucumber正是其中应用最为广泛的工具之一。 Cucumber作为一个非常友好的行为驱动开发工具,它的设计初衷是希望...

    mystore-cucumber:Cucumber中的自动化示例

    Cucumber是一个流行的自动化测试框架,尤其在行为驱动开发(BDD)中广泛应用。它允许开发者、测试人员和非技术人员通过易读的自然语言来编写测试场景,这些场景被称为Gherkin语句。mystore-cucumber项目是针对...

    行为驱动开发全(BDD)面介绍

    行为驱动开发(Behavior Driven Development,简称BDD)是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术或商业参与者之间的合作。BDD的核心是使用自然语言来描述软件的行为,从而使团队成员能够更...

    cucumber学习笔记V1.0

    ### Cucumber 学习笔记 V1.0 #### Cucumber 的特点 Cucumber 是一个用于执行功能描述作为自动化测试工具的框架。它所使用的语言被称为 ...通过不断学习和实践,可以充分发挥 Cucumber 在行为驱动开发中的作用。

    基于行为驱动开发的自动化测试方法研究.rar

    **行为驱动开发(Behavior Driven Development,BDD)**是一种软件开发方法,它强调通过描述系统的行为来驱动设计和开发过程。与传统的测试驱动开发(TDD)不同,BDD更侧重于非技术人员(如业务分析师和产品经理)也...

    Learning-Cucumber:使用Cucumber进行BDD测试

    **行为驱动开发(Behavior-Driven Development, BDD)**是一种软件开发方法,它强调通过具体的用户行为来描述软件的功能,从而提高开发团队与利益相关者之间的沟通效率。**Cucumber** 是一个流行的BDD框架,它支持...

Global site tag (gtag.js) - Google Analytics