Cucumber是如何工作的?

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

内容简介: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内容。


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

查看所有标签

猜你喜欢:

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

Ruby元编程

Ruby元编程

[意] Paolo Perrotta / 廖志刚、陈睿杰 / 华中科技大学出版社 / 2012-1-10 / 56.00元

《Ruby元编程》以案例形式循序渐进讲解Ruby对象模型原理和高级应用技巧,堪称动态语言的设计模式。书中讲述的各种Ruby编程模式,完全可以应用于其他动态语言(甚至静态语言)。本书不仅适合Ruby程序员阅读,也适合对动态编程 语言和面向对象编程感兴趣的读者阅读。所有对程序设计理论感兴趣的人都能从中获益。Ruby之父松本行弘作序推荐。一起来看看 《Ruby元编程》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具