从0-1学习Cucumber之基于behave自动化测试教程(二)

简介: 全网最全的的 behave 中文教程!

❤ 大家好!我是虫兵   ❤~

坚持为应届毕业生提供简历指导及职业规划建议!

坚持无偿为初中级测试工程师提供问题解答!

让分享成为一种美德!

❤ 此系列文章敢说全网最干的 behave 教程文章!❤

虫兵



跟下来必有所得!此系列文章敢说全网最干的基于行为驱动开发模式(BDD)的 基于 python behave 自动化测试教程文章!


前情提要

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

上集内容我们主要讲了,Cucumber 是什么,behave 框架的来源,以及Cucumber behava python 和 Gherkin 之间的关系是什么,其中Gherkin 是其中的重要部分,是描述case 的自然语言,所以今天我们主要学习一下Gherkin,如果对相关知识不了解的过同学应该从以 (一)看起,否则你会看不懂。


坚持跟下来你就从 0 -1 掌握了 behave 的自动化测试了!


进入主题

      Gherkin 使用很多关键词来定义case 的描述,每个关键词里可以用自然语言也就是日常我们交流的这种口语来描述,Gherkin 的文档中大多数都是以一个关键词开头,知识点:注释必须新起一行,也就是不能和关键字在同一行,否则也会被认为是描述一部门如图所示,


如图在每个关键词的后面被称为代码块,这部分要在代码中有定义,后面会说,官方叫步骤定义。

还需要注意的是像 Scenario后面是有(:)冒号的,其他关键词没有,如果你不小心在其他关键词后面也加了冒号,程序是不执行的


关键词

       除了feature 和 Scenario 其他关键词后面都不能有空行,Gherkin 支持的关键词有:

  • Feature
  • Rule (as of Gherkin 6)
  • Example (or Scenario)
  • Given, When, Then, And, But for steps (or *)
  • Background
  • Scenario Outline (or Scenario Template)
  • Examples (or Scenarios)

还有一些次要的关键词:


  • """ (Doc Strings)
  • | (Data Tables)
  • @ (Tags)
  • # (Comments)


Feature

      Gherkin 文件中的第一个关键词就是 Feature , 这里的描述内容在 Cucumber 运行时被忽略,但是html 测试报告中会展示。除了 Feature 后面可以描述一些文本。还有其他关键字也可以加描述比如:Example/Scenario, Background, Scenario Outline and Rule

并且所有描述都支持 markdown 模式。


Rule (不常用)

  Gherkin6之后支持 Rule 关键词,目前博主也没搞清楚他实际使用场景被认为不常用吧。


Example (不常用)


       Example 的意思和Sceario 意思是一样的,Example 除了一般和Rule 搭配使用其他也没啥特殊的,暂且就认为和Scenario 一样就可以。


Steps


      每个步骤都以 Given, When, Then, And, or But,开头。Cucumber 执行每个关键词按着他们被写的顺序,Cucumber 只要匹配到每个关键词后面的描述后就会被执行,官方说:这意味着您不能在 Given、When、Then、And 或 But 步骤中使用与另一个步骤相同的文本。。

但是我在测试时候是可以的...这可能是因为behave 框架的原因,跟Cucumber Gherkin 没啥关系。



Given

       

       官方描述了很多其实说白了就是,官网建议Given 关键字是在你一个case 的描述起到一个前置条件的设置作用,比如你要测试一个接口,可以通过Given 先来一个初始化数据的操作。可以设置多个 Given 可以通过 And 来串联让可读性更强。

例如:



When


       官方建议 When 关键词在一个场景中只应该有一个,如果你必须有多个,官方建议应该拆成多个场景,也就是把case 拆分的更细。


Then


       then 关键词一般是对结果的描述。应该通过断言去判断实际和预期的结果。结果应该该是可以看到的,是能输出出来的,而不是在系统内部。如存在数据库上的数据。官方大大说了不建议通过 Then 关键词直接去查询数据库。这其实也算是自动化测试的一个原则吧,如果测一个接口的数据是否成功。更多应该建议通过另一个输出接口来获取预期数据。但实际感觉也没什么不好,这可能是违反了可观测性的原则吧,或者说是你没有站在用户的角度上思考,因为用户是不会关心数据库里面存没存的,他只关心系统返给用户信息对不对。


But,And


       这里不做过多赘述就是一些链接的关键词而已。相信大家都懂。


* (不常用)


       * 可以代替一些关键字 , 感觉没啥用


BackGround


       如果你有一些公共的逻辑是需要前置执行时候,其实不需要每个 Sceanario 都写一份的,可以把他们抽出来放到一个 BackGround进行管理。Cucumber 运行时每个 Sceanario 前都会先执行 BackGround中的步骤定义,这特性还是蛮有用的。图中在输出 one.two 之前都输出了 backgd 。


官方对BackGround 的使用有一些建议:

  1. 不要在 background 里设置复杂状态也就是处理复杂逻辑
  2. backgroud 尽可能短
  3. backgroud 应该清晰,让人一眼知道要干什么

确实不应该改在这些公共步骤里增加复杂逻辑,如果你有复杂逻辑那就应该拆分,这也比较像面向对象的单一原则。



Scenario Outline


       场景大纲,关键词可以通过不同的值的组合可以在同一个 Scenario 中运行多次,关键词 Scenario Template 和 Scenario Outline 一个意思用哪个都可以。在步骤中使用“<>”来获取变量的值,Scenario Outline 使用的话必须用 Examples 关键字,Cucumber 在运行的时候会把 <>中的参数用 Examples 的数据替换。如示例图:

<>中的 dir_name 变量一次替换了下方 Examples 中的数据,所以控制台打印了多个,但其实是定义在了一个 Scenario 中。



Step Arguments

       步骤参数,有时候我们需要传递一些参数,Gherkin 提供了    Doc Strings and Data Tables 两种方式,感觉没有那么灵活,比如我想传数组,字典什么的都不行。。。不过可以封装吧自己。

DocStrings,传递了一些文本数据:

Data tables demo:

表格中特殊字符转义:

如果逆序填 | 那么可以写成 \I ,如果需要 \, 可以写成 \\.

behave 框架对这些 docstrig 或者 table 数据的获取做了封装,后面教程会说到。


最后

       官方推荐,选择什么语言来编写用例应该和日常说的语言一样,避免多个语言进行切换,其实就是要么一直中文,要么一直英文,我觉得。看个人习惯吧, 我们现在就是用的中文描述。

      Gherkin 目前支持过70个国家的语言。

下面是一个挪威语言编写的例子,大家看着玩就好:


知识点总结


  • Gherkin 都支持哪些关键字
  • 这些关键字都是什么意思?
  • 这些关键字都怎么用
  • 哪些比较常用哪些不常用
  • 关键字步骤之间参数如何传,都支持哪些类型的参数传递。


掌握以上内容就达到了本章的学习目的,下一节内容我们就进入了 python 的 behave 框架是如何支持 Cucumber 及本章内容的定义的没开始真正学习之旅。


可以加VX技术交流:1010584905

往期内容:

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




相关文章
|
3月前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
5月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
4月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
971 10
|
3月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
3月前
|
监控 测试技术 API
n8n自动化测试教程 (1):环境搭建与初识n8n
n8n是一款开源、可视化的工作流自动化工具,测试工程师可通过拖拽节点快速构建API测试流程,实现测试编排、数据管理、自动化监控与告警等功能,提升测试效率与覆盖率。
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
297 61
|
3月前
|
安全 Shell 持续交付
Debian Apache 自动化部署教程:4 种方法,从个人到企业批量装机
本文介绍在 Debian 系统中实现 Apache 自动化部署的 4 种实用方法,涵盖个人单机与企业批量部署场景。内容包括使用 Bash 脚本一键安装、通过 PXE 实现网络批量部署、借助 Ansible/Puppet 进行多机统一配置管理,以及利用 Preseed 文件自动完成安装配置。文章还提供操作示例与避坑建议,帮助用户提升部署效率,降低人为错误。
154 0
|
4月前
|
JSON 安全 测试技术
什么是API接口测试?这可能是全网最全的教程了!
API 是应用程序间的“中间人”,用于实现通信和数据交换。随着微服务架构的普及,API 数量激增,其质量对系统稳定性至关重要。API 测试可验证功能、性能与安全性,帮助开发者在部署前发现并修复问题,提升系统可靠性。测试内容包括请求方法、URL、请求头、请求体、响应状态码与响应数据等。常用工具如 Postman、AREX 可辅助测试,确保 API 在不同场景下的正确性与稳定性。
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2014 10
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
375 1