Cucumber -基于 behave 自动化测试指南 (一)

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 基于 behave 自动化测试系列教程

 

大家好!我是虫兵 ~

一个近 10 年经验的测试开发工程师

擅长自动化体系建设与 devops !

如果我的文章对你有帮助,可以点个关注奥 !


BDD 简介

       要想学习 behave 我们必须要了解他的历史,也就是behave 是怎么来的呢?那就要从 BDD 开始聊起。什么是BDD呢?如下


Cucumber 官网

BDD 侧重于通过与利益相关者的讨论获得对所需软件行为的清晰理解。它通过用非程序员可以阅读的自然语言编写测试用例来扩展 TDD。行为驱动开发人员使用他们的母语与领域驱动设计的普遍语言相结合来描述他们代码的目的和好处。这允许开发人员专注于为什么要创建代码,而不是技术细节,并最大限度地减少编写代码的技术语言与业务、用户、利益相关者、项目管理等所使用的领域语言之间的翻译.

Cucumber 官网

   以上内容来自官网的一些介绍,如果想了解更细大家就直接读官网去学习BDD更多理论知识:https://docs.cucumber.io/docs/bdd/。在本篇不是重点。

       官方给了以上解释,那么作者用大白话给不太理解各位再简单说一下其实,BDD 也是随着敏捷研发 兴起提出的新概念,敏捷开发大家知道里面涉及角色很多有产品、项目管理、研发、测试等更多强调的是多角色的协作,BDD是由业务驱动,用户通过UI上的元素点击和其他元素交互最终完成一个业务,所以为了让用户的每一步操作都可以快速获得反馈,那么就有了行为驱动测试框架 Cucumber 的产生了。

本文背及目标

       本文是一个系列文章,背景是因为作者公司最近的自动化测试项目最终调研方案采用的就是 Cucumber,由于我们项目代码是python语言用,所以我们也是 python 语言开发采用的是behava 框架来实现的。behave 的官网教程文档作者感觉写的不是很清晰很多用法也没有给 demo,所以很难受。于是 就有了写这个系列文章的想法,主要目的也是给再用或者即将 behave 框架的人做一个补充参考资料,希望通过本系列文章可达到直接上手 behave 的目的。

每篇文章的末尾作者都设计了几道课后题,

如果你能正确作答课后题那么就达到学习目标了!

一起学起来吧!!

   

学习完后可以收货什么

  1. 对于正在调研学习 Cucumber 框架的工程师可以起到入门作用
  2. 对于已经选型 behave 的工程师可以通过本系列文章快速上手


print ("欢迎大家一起学习交流")

print ("VX:1010584905")


学习behave 前需掌握的知识点

什么是Cucumber?

      Cucumber 上文说了是基于BDD理念衍生出来的一个自动化测试框架,(你就可以简单理解为单元测试概念衍生的测试框架 Java 有 Junit,testng ,python 有 pytest 等) Cucumber 流程大概就是读取一些文本编写的规范文件,然后验证这些规范是否符合编写的要求,这些规范编写是由固定编写规则和特殊语法必须按着这种规则语法写,Cucumber 才能识别。举个例子如下:


Scenario: 验证一个接口返回内容是否符合预期

 Given 请求接口“api/getAccountInfo”

 When 发送GET请求

 Then 返回用户信息包含名字为“allen”年龄是“29”岁


上文每个场景(Scenario)包含多个步骤列表,这些列表中有一些关键字描述(Given\When\Then),Cucumber 严格执行看每行是否符合描述预期然后会生成一个报告,每个场景(Scenario)通过 ✅ success or ❌ failure来标识。

那么以上文字描述看起来是不是怪怪的,这种怪怪的描述就叫做 Gherkin.


什么是Gherkin?

Gherkin 是由一组纯文本描述的结构为了让Cucumber可以读懂的自然语言。这种语法在许多不同国家都有不同的表现形式,所以你的团队可以使用属于你们自己语言的关键词。

Gherkin 语言描述的文档一般都是保存在一个.feature 文件中(如图),通常这个文件是和你的源代码一块进行版本管理,但是其实作者我来说如果你的项目够大协作人够多,其实我是推荐分开管理,也就是case 和 框架分离。可以做成平台化管理。


python 在Cucumber 中的作用?  

      python 在 Cucumber 中的作用其实很好理解了,在实际项目中我们的编程语言众多。迄今为止 Cucumber 对绝大多数编程语言都有对应实现框架的支持(如图),Cucumber 官方推荐选择哪种语言的实现框架和你被测的项目最好保持一致,作者认为有几个原因吧,这要追溯到最初Cucumber 问世是为了多角色协同,所以是希望 RD 同学也可以参与到自动化建设当中,那么就需要和被测项目保持一致了,如果你的被测项目是 Java 语言开发, 你用 python 搞了一套自动化框架,那么显然对于RD来说是有学习成本的是不利于合作的。


这里面:

  • 绿色 是官方托管的,也就是在官方的 Cucumber 工程目录下,由官方实现并维护
  • 蓝色 是半官方,托管在其他地方但是用的是 Cucumber 的组件
  • 黑色 非官方的,托管在其他地方也没有用官方任何组件,说白了,自己实现的这套东西,也能解析 Gerken 描述的case。
  • 红色 官方实现 但没有维护的就等着你去维护呢 !!!!!!!!!!!


behave在Cucumber 中的作用?


      behave是一个python语言的一个BDD测试框架,说白了是对Cucumber 这套东西的一个封装吧,你可以使用python 语言的 behave 框架去实现测试你的项目, 其实最终去解析用Gerkin 描述的case的就是behave 。


知识点总结

  • BDD 是行为驱动开发,是敏捷开发衍生出的一种概念,强调多种角色的顺畅协作
  • Cucumber 是基于 BDD 实现的一套行为驱动测试框架,支持多种编程语言
  • python 是 Cucumber 支持多种编程语言中的一种
  • Gherkin 是支持由一种支持纯文本方式描述的自然语言,通过这种自然语言描述 Cucumber 框架才可以读懂
  • behave 是基于 python 语言对Cucumber 实现的一个真正的实例,具体解析语言描述的 case,每个编程语言不一样而 python 靠的就是 behave.

课后题

# 本文学习的目标

print("通过本章了解什么是BDD?")

print("什么是Cucumber ?")

print("Cucumber 、Gherkin、python、behave 的意关系是什么?")


下期预告

Gherkin 是学习 behave 的一个重点所以下期我们要详细学习它

  • 如何使用 Gherkin 语言去描述 case
  • Gherkin 都支持哪些关键字
  • 每个关键字的作用
  • 等等


相关文章
|
XML Java Maven
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
262 7
|
JavaScript 前端开发 Java
Spring Boot+cucumber+契约测试
Spring Boot+cucumber+契约测试
210 0
Spring Boot+cucumber+契约测试
|
自然语言处理 测试技术 数据库
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。

热门文章

最新文章