Cucumber是如何工作的?

栏目: 编程工具 · 发布时间: 7年前

内容简介:BDD 是现在敏捷测试中比较流行的概念,BDD使用自然语言面述测试场景,团队中各个角色的成员通过自然语言描述的场景来进行沟通,从而提高团队之间的协作效率。Cucumber是基于BDD的一个优秀框架。作为一个流行的自动化测试框架,Cucumber 使用易于理解的语法,支持多种自然语言来描述测试用例。这篇文章主要通过介绍Cucumber核心架构和执行细节来解释“ Cucumber是如何运行的?”这个问题。一个Cucumber项目的结构大致如下:

BDD 是现在敏捷测试中比较流行的概念,BDD使用自然语言面述测试场景,团队中各个角色的成员通过自然语言描述的场景来进行沟通,从而提高团队之间的协作效率。Cucumber是基于BDD的一个优秀框架。

作为一个流行的自动化测试框架,Cucumber 使用易于理解的语法,支持多种自然语言来描述测试用例。这篇文章主要通过介绍Cucumber核心架构和执行细节来解释“ Cucumber是如何运行的?”这个问题。

Cucumber 项目结构

一个Cucumber项目的结构大致如下:

Cucumber是如何工作的?

它包括如下部分:

Feature文件(剧本文件)

测试项的目运行文件都在features目录下,以 .feature 结尾的为剧本文件,一个剧本文件中可以包含多个场景,一个场景包含多个操作步骤。

下面是一个简单的feature文件样例

# language: zh-CN
功能: 搜索功能
给定关键字进行搜索,搜索结果中应包含这些关键字。

  场景: bing搜索
    假如浏览器导航到"http://www.bing.com"

复制代码

这个feature文件中包含了一个"bing搜索"场景,这个场景主要描述了bing搜索的一般操作流程,根据文档,任何人都可以看懂要做什么。

使用 .feature 剧本文件,以场景描述和操作步骤阐述测试的业务,通过这个方式,将业务组合起来。

Step Definitons (步骤定义)

.feature 文件中描述的业务步骤要运行起来,需要根据业务场景定义操作行为 。具体的业务行为是由相对应的自动化脚本来实现,这些自动化实现脚本主要定义在 step_definitions 目录下,例如,操作步骤面述为 根据这个场景生成对的Cucumber自动化代码样例:

Given(/^浏览器导航到"([^"]*)"$/, async function(url) {
    await driver.get(url);
});
复制代码

根据这些代码样例,只需要将其中的每个操作用自动化代码实现即可。 这些自动化代码一般存放在 step_definitions 目录中。

Support Code (支持代码)

自动化脚本在执行的过程中,比如上文中提到的driver,作为浏览器的驱动,需要抽象出来,单独放在一个目录中,就是 support,这里还可以定义每个操作步骤执行的超时时间,场景执行前,执行后等这些运行时的设定。

Cucumber测试套件

下面是Cucumber测试套件feature文件与自动化脚本文件之间的映射关系,从(1)开始,其中包含场景(2)和步骤(3)。(4)为场景的调用步骤定义,每一个操作步骤与一个自动化实现代码对应。

Cucumber是如何工作的?

上图是一个在CukeTest开发环境中简单的Cucumber.js自动化测试的示例,其中此步骤定义中的基础代码是JavaScript,而自动化库是selenium-webdriver。CukeTest是开发Cucumber.js的集成开发环境。Cucumber.js被广泛采用的一个重要原因是Node.js的广泛普及,另一个原因是广泛的自动化 工具 都全面支持JavaScript、特别是Node.js(如Appium、Selenium、puppeteer等),这些工具覆盖了各类应用的自动化,包括Web、Android、iOS、API、Windows等等。

执行

Cucumber的剧本文件和相应的步骤定义位于特定的文件夹结构中,如下所示

Cucumber是如何工作的?

Cucumber(剧本文件)位于features文件夹中,步骤定义文件位于step_definitions文件夹中。

Cucumber是一个命令行工具,要执行测试,您必须导航到父文件夹(上例中的“演示文件夹”),然后通过引用“features”文件夹中的位置执行测试。如想在开发环境中编辑调试Cucumber脚本,可使用可视化编辑工具CukeTest,它提供可视化的feature编辑界面,一键生成自动化代码样例, 提供多种测试报告,并可以与多种持续集成工具。

$ cd Desktop/Demo_Folder/
$ ./node_modules/.bin/cucumber.js features/google_Test.feature
复制代码

这将执行步骤定义文件中的特征文件和相应的代码。如果步骤执行没有错误,Cucumber将继续执行场景中的下一步。如果它在没有任何步骤引发错误的情况下到达场景的末尾,则会将场景标记为已通过。

如果方案中的任何步骤失败,Cucumber会将方案标记为失败并转到下一个方案。随着场景的运行,Cucumber会显示结果,让您清楚地看到每个操作步骤执行的情况。

总结

现在 Cucumber在越来越多的团队中开始使用,社区中也越来越多关于Cucumebr相关文档。Cucumber代码编辑工具也日渐完善。如果你英文足够好,可直接阅读Cucumber的官方文档, github.com/cucumber/cu… 了解更多Cucumber内容。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning jQuery

Learning jQuery

Jonathan Chaffer、Karl Swedberg / Packt Publishing / 2007-7-7 / GBP 24.99

jQuery is a powerful JavaScript library that can enhance your websites regardless of your background. In this book, creators of the popular jQuery learning resource, learningquery.com, share the......一起来看看 《Learning jQuery》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具