一.简介

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框架使用解析相关推荐

  1. ImageIO 框架详细解析

    ImageIO框架详细解析(一) -- 基本概览 ImageIO框架详细解析(二) -- 使用ImageIO基础 ImageIO框架详细解析(三) -- 创建和使用图像源 ImageIO框架详细解析( ...

  2. freecplus框架-xml解析

    文章目录 一.源代码说明 二.xml格式字符串介绍 三.xml格式字符串的解析 四.应用经验 五.获取视频教程 六.版权声明 一.源代码说明 freecplus是一个Linux系统下的C/C++开源框 ...

  3. CFNetwork 框架详细解析

    1. CFNetwork框架详细解析(一) -- 基本概览 2. CFNetwork框架详细解析(二) -- CFNetwork编程指导之简介(一) 3. CFNetwork框架详细解析(三) -- ...

  4. [强烈推荐] 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析

    新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基 ...

  5. iOS音频播放第三方框架FreeStreamer解析(全)

    iOS音频播放第三方框架FreeStreamer解析(全) 新项目是一款音频播放类软件,作为该项目核心功能:音频播放.第一版本是使用了系统提供的AVPlayer框架来实现音频文件的播放,再开发完成之后 ...

  6. 同人逼死官方系列!基于sddc 协议的SDK框架 sddc_sdk_lib 解析

    基于sddc 协议的SDK框架 sddc_sdk_lib 解析 之前在移植 libsddc 库的时候感觉官方 demo 太低效了( ̄. ̄),复制粘贴代码好累,而且写出一个BUG,其他复制的代码整个就裂 ...

  7. HealthKit 框架详细解析

    HealthKit框架详细解析(一) -- 基本概览(一) HealthKit框架详细解析(二) -- 基本概览(二)

  8. el-admin框架简单解析

    el-admin框架简单解析 el-admin 简单了解 使用框架的四大步 前端文件架构 el-admin前端部分解析 前端Vue目录结构 Layout 布局 mixins 混入模式 router 路 ...

  9. Cucumber框架入门篇

    Cucumber介绍 Cucumber是一个支持BDD(Behavior Driven Development),即行为驱动开发的自动化测试框架.在进行单元测试或者集成测试之前,事先将测试的步骤和验证 ...

最新文章

  1. HDU4857拓扑排序模版题
  2. python中的logging日志
  3. PHP代码静态分析工具PHPStan
  4. python的原则_python 类的使用原则
  5. Mybatis配置文件头
  6. Nand Flash Yaffs系统大量写入数据失败问题的解决方法。
  7. IndexError: list index out of range--Python报错原因及解决办法
  8. Flex里Application和TitleWindow数据交互方法
  9. Hyper-V的安装准备
  10. 微软宣布提供Azure Cognitive Services容器支持
  11. mysql 主从延迟
  12. 弱小目标检测领域下图像的信噪比(SNR)计算方法
  13. 抖音最火的微信推送教程
  14. 《JAVA 技术》第二次作业
  15. VSS无法访问 (0x80072EFD) 转载
  16. 北汽极狐ARCFOX与华为合作
  17. 如何查看自己的电脑硬盘是不是固态硬盘
  18. 镁客网每周硬科技领域投融资汇总(12.24-12.30),未来医疗占比猛增,阿里两项亿级投资...
  19. outlook邮箱邮件大小限制_附件大小超过了允许的限制错误 - Outlook | Microsoft Docs...
  20. 未启用windows无线服务器,win10未启用对服务器的远程

热门文章

  1. IP网络设备的测试方法
  2. Visual Studio 2019安装vsix插件及Gitee.VisualStudio安装包
  3. (转)UltraEdit 注册机使用激活方法
  4. JVM:可达性分析算法
  5. c语言作业 -教师评价系统
  6. python 因子分析 权重计算方法_【万矿新品】因子研究利器——WindAlpha
  7. 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解
  8. ListView分页详解(非常有用)
  9. java 生成随机数_不会生成随机数?我们来看看java生成随机数的10种方法
  10. 矩阵求逆,矩阵转置,矩阵相乘