cucumber框架使用解析
一.简介
Cucumber 是一个能够理解用普通语言描述的测试用例的行为驱动开发(BDD)的自动化测试工具,,用Ruby**编写,支持Java和·Net等多种开发语言。
二.Cucumber三大组成
1、由Features、Step_definitions、Cucumber command组成
2.Features
- 基于Gherkin。支持语言:# language: en (zh-CN)等
- Features文件必须以.features命名。
- 包含title,多个scenarios,每个scenario包含多个step。
3.Step_definitions
- Step定义必须以关键字Given,When,Then,And开始,根据正则匹配对应的关键字
- 根据feature文件中定义的step编写对应的测试代码。
4.Cucumber command
- 运行*.feature文件。cucumber会分析feature文件中定义的step,然后去step -definitions寻找相匹配的step,执行step中的代码
- 运行结果以html的形式保存,fail的情况查看对应log日志
三.cucumber开发过程
1.首先使用cucumber原型Maven插件创建一个新的项目目录
mvn archetype:generate -DarchetypeGroupId=io.cucumber -DarchetypeArtifactId=cucumber-archetype -DarchetypeVersion=6.10.4 -DgroupId=hellocucumber -DartifactId=hellocucumber -Dpackage=hellocucumber -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false
2、创建feature文件,包括feature,scenarios和step
Feature: Is it Friday yet?Everybody wants to know when it's FridayScenario: Sunday isn't FridayGiven today is SundayWhen I ask whether it's Friday yetThen I should be told "Nope"
3.创建step_definitions
package hellocucumber;import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import static org.junit.Assert.*;class IsItFriday {static String isItFriday(String today) {return "Nope";}
}
public class StepDefinition {private String today;private String actualAnswer;@Given("^today is Sunday$")public void today_is_Sunday() {today = "Sunday";}@When("^I ask whether it's Friday yet$")public void i_ask_whether_is_s_Friday_yet() {actualAnswer = IsItFriday.isItFriday(today);}@Then("^I should be told \"([^\"]*)\"$")public void i_should_be_told(String expectedAnswer) {assertEquals(expectedAnswer, actualAnswer);}
}
3.Gherkin方法
- Feature (功能)-------------test suite (测试用例集)
- Scenario(情景)-----------test case (测试用例)
- Scenario Outline (or Scenario Template):如下,和examples更配哦,多用于逻辑相同时,多组参数传参
Scenario Outline: eatingGiven there are <start> cucumbersWhen I eat <eat> cucumbersThen I should have <left> cucumbersExamples:| start | eat | left || 12 | 5 | 7 || 20 | 5 | 15 |
- Given(给定)-------------setup(创建测试所需环境)
- When(当)----------------test(触发被测事件)
- Then(则)-----------------assert(断言,验证结果)
- Background(背景):您会发现自己在一个功能的所有场景中重复相同的给定步骤,因为它在每个场景中都是重复的,这表明这些步骤对于描述场景不是必需的;它们是附带的细节。您可以通过将这些给定的步骤分组到background部分,将它们移动到后台。
- And(or But):如果你有连续的“给定”、“何时”或“然后”
- “”"(定义多行字符串):方便地将较大的文本段传递给步骤定义
- |(用来定义表格):数据表便于将值列表传递给步骤定义
cucumber框架使用解析相关推荐
- ImageIO 框架详细解析
ImageIO框架详细解析(一) -- 基本概览 ImageIO框架详细解析(二) -- 使用ImageIO基础 ImageIO框架详细解析(三) -- 创建和使用图像源 ImageIO框架详细解析( ...
- freecplus框架-xml解析
文章目录 一.源代码说明 二.xml格式字符串介绍 三.xml格式字符串的解析 四.应用经验 五.获取视频教程 六.版权声明 一.源代码说明 freecplus是一个Linux系统下的C/C++开源框 ...
- CFNetwork 框架详细解析
1. CFNetwork框架详细解析(一) -- 基本概览 2. CFNetwork框架详细解析(二) -- CFNetwork编程指导之简介(一) 3. CFNetwork框架详细解析(三) -- ...
- [强烈推荐] 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析
新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基 ...
- iOS音频播放第三方框架FreeStreamer解析(全)
iOS音频播放第三方框架FreeStreamer解析(全) 新项目是一款音频播放类软件,作为该项目核心功能:音频播放.第一版本是使用了系统提供的AVPlayer框架来实现音频文件的播放,再开发完成之后 ...
- 同人逼死官方系列!基于sddc 协议的SDK框架 sddc_sdk_lib 解析
基于sddc 协议的SDK框架 sddc_sdk_lib 解析 之前在移植 libsddc 库的时候感觉官方 demo 太低效了( ̄. ̄),复制粘贴代码好累,而且写出一个BUG,其他复制的代码整个就裂 ...
- HealthKit 框架详细解析
HealthKit框架详细解析(一) -- 基本概览(一) HealthKit框架详细解析(二) -- 基本概览(二)
- el-admin框架简单解析
el-admin框架简单解析 el-admin 简单了解 使用框架的四大步 前端文件架构 el-admin前端部分解析 前端Vue目录结构 Layout 布局 mixins 混入模式 router 路 ...
- Cucumber框架入门篇
Cucumber介绍 Cucumber是一个支持BDD(Behavior Driven Development),即行为驱动开发的自动化测试框架.在进行单元测试或者集成测试之前,事先将测试的步骤和验证 ...
最新文章
- HDU4857拓扑排序模版题
- python中的logging日志
- PHP代码静态分析工具PHPStan
- python的原则_python 类的使用原则
- Mybatis配置文件头
- Nand Flash Yaffs系统大量写入数据失败问题的解决方法。
- IndexError: list index out of range--Python报错原因及解决办法
- Flex里Application和TitleWindow数据交互方法
- Hyper-V的安装准备
- 微软宣布提供Azure Cognitive Services容器支持
- mysql 主从延迟
- 弱小目标检测领域下图像的信噪比(SNR)计算方法
- 抖音最火的微信推送教程
- 《JAVA 技术》第二次作业
- VSS无法访问 (0x80072EFD) 转载
- 北汽极狐ARCFOX与华为合作
- 如何查看自己的电脑硬盘是不是固态硬盘
- 镁客网每周硬科技领域投融资汇总(12.24-12.30),未来医疗占比猛增,阿里两项亿级投资...
- outlook邮箱邮件大小限制_附件大小超过了允许的限制错误 - Outlook | Microsoft Docs...
- 未启用windows无线服务器,win10未启用对服务器的远程
热门文章
- IP网络设备的测试方法
- Visual Studio 2019安装vsix插件及Gitee.VisualStudio安装包
- (转)UltraEdit 注册机使用激活方法
- JVM:可达性分析算法
- c语言作业 -教师评价系统
- python 因子分析 权重计算方法_【万矿新品】因子研究利器——WindAlpha
- 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解
- ListView分页详解(非常有用)
- java 生成随机数_不会生成随机数?我们来看看java生成随机数的10种方法
- 矩阵求逆,矩阵转置,矩阵相乘