个人感觉这个框架非常适合UI自动化测试,他不仅能把用例中的测试步骤以非常友好的形式展现出来,而且能够非常灵活的构建场景;
一、简介
Cucumber 是一个能够理解用普通语言 描述的测试用例的行为驱动开发(BDD)的自动化测试工具,用Ruby**编写,支持Java和·Net等多种开发语言。
Cucumber可以让人们用近似自然的语言去描述Feature和场景,根据Feature驱动开发。用作软件技术人员和非技术之间验收测试的桥梁。它是一个命令行工具。运行后,会执行features中的内容。feature中的step会调用stepdefinitions(Ruby代码)可以用标签来组织场景支持40多种语言高质量集成Ruby
二、Cucumber三大组成
- 组成
Features、Step_definitions、Cucumber command。
对应传统测试工具:
Feature (功能)-------------test suite (测试用例集)
Scenario(情景)-----------test case (测试用例)
Given(给定)-------------setup(创建测试所需环境)
When(当)----------------test(触发被测事件)
Then(则)-----------------assert(断言,验证结果)工作原理:
三、Features
- 语法规则:
- 基于Gherkin。支持语言:# language: en (zh-CN)等
- Features文件必须以.features命名。
- 包含title,多个scenarios,每个scenario包含多个step。
- Step定义必须以关键字Given,When,Then,And开始。
四、Step_definitions
- 根据feature文件中定义的step编写对应的测试代码。
五、Cucumber command
- 运行:*.feature文件。cucumber会分析feature文件中定义的step,然后去step - definitions寻找相匹配的step,执行step中的代码。
- 运行结果以html的形式保存,fail的情况查看对应log日志
六、Cucumber的开发过程
- 创建feature文件,包括feature,scenarios和step。
- 创建step_definitions,即RUBY代码并实现。如果只有step,没有step definitions,会报undefined错。Ruby写法:Given /^the input "([^"]*)"$/ do |arg1|。运行feature,控制台中会输出RUBY的实现方法,只要实现step_definitions即可。
- cucumber --format progress。格式化输出。可修改为html,xml等格式输出。
- 添加断言:
- 一个场景失败,Cucumber将此场景标记失败,转去执行下一场景。
- 一个step失败,会跳过这个scenario的其余step,从而终止这个scenario。
七. Gherkin方法:
- 关键字:
Feature
Background
Scenario
Scenario Outline
Scenarios(or Examples)
Given
When
Then
And(or But)
-
|
(用来定义表格) -
"""
(定义多行字符串) -
#
(注释)