自动化工具 测试工程师进阶,从 0-1 学习 Cucumber 之基于 behave 自动化测试教程(四)

虫兵 · 2022年06月13日 · 最后由 小叮当 回复于 2022年06月14日 · 4705 次阅读

​❤  大家好!我是虫兵   ❤~

一个混迹过各大小厂的资深测试开发工程师,千人经验的面试官,

做一些回馈社区力所能及的事情:坚持为应届毕业生提供简历指导及职业规划建议!坚持无偿为初中级测试工程师提供问题解答!

让分享成为一种美德!

❤  此系列文章敢说全网最干最全的 behave 教程文章,跟下来必有所得!❤

以后的文章增加 Python 冷知识环节,因为 Python 我觉得对测试同学实在是太友好了。

Python 小知识- Python 语言的诞生背景

Python 最初开发于荷兰阿姆斯特丹的一所研究机构,即 CWI,这是一个荷兰语缩写,意思是数学和计算机科学研究学会,1982年python 之父到 CWI 上班,那时才刚毕业,一开始是在 Lambert Meertens 和 Steven Pemberton 领导下的 ABC 语言组做程序员。Python 是其在 CWI 工作经验的直接产物。ABC 语言提供了灵感。之所以开发 Python,是感觉 Amoeba 项目需要一门高级编程语言。用 C 语言写系统管理程序太慢,而且因为各种各样的原因,很多程序在 Bourne shell (译注:Version 7 Unix默认的Unix shell)里无法运行。更关键的是,作为一种全新设计的分布式微内核系统,Amoeba 的很多基本操作(元操作 | primitive operations)与 Bourne shell 支持的操作有很大区别(粒度更细)。因此需要一门语言来作为“C语言与shell之间的桥梁”——很长一段时间内,所有人都是这么认为。从此python就诞生了。
以上内容来自 python 之父的博客由作者本人翻译及整理,希望大家可以了解下 Python 一些背后故事,会感觉很有趣

前情提要

测试工程师进阶,从 0-1 学习 Cucumber 之基于 behave 自动化测试教程(三)

上集内容我们主要讲了,behave 框架的环境搭建 及 behave 的一些 demo 介绍,本章内容我们继续对 behave 的用法进一步补充,本章完结后,我们会通过一个 demo 项目,完整的展示下行为驱动开发自动化框架 behave 的使用, come on ! ~~

更多 behave 使用方式

上节内容我们看到,我们执行 behave 是通过 behave 的命令行,而不是 main 方法,通过命令行执行是官方提供的方式,那么 behave 命令行执行都包括什么功能呢? 今天我们介绍一些比较常用的。

  • 控制台直接执行 behave
    直接在项目的跟路径下执行 behave 命令,默认是 behave 寻找所有的 .feature 都会被执行如图:

  • behave [feature 文件目录路径 或者是 .feature 文件路径]
    控制台执行: behave features/demo1 或者 behave features/demo1/demo.feature

    behave 寻找的是对应目录下 feature 文件或者 指定的 feature 文件。

  • behave [--tags]
    控制台执行:behave --tags xxx , tags 是用来标记在 feature 中每一个 Scenario 的,标记之后可以只对标记次 tag 的执行如图:

当然他也是可以和 刚才 behave + 目录 这种方式结合执行,比如: behave features/demo1 --tags run_only_this ,只会跑 demo1 目录下 tag 为 run_only_this ,大家灵活掌握

  • behave [--no-capture] 之前提到过,behave 默认是不会输出 print 答应的内容。behave 默认是捕获输出的,如果我们在 debug 的时候希望有日志打印可以通过 --no-capture 关闭输出

环境控制

behave 提供是通过一个 environment.py 的固定 py 模块 在执行测试的过程中过程前或者过程后用户可以自定义代码逻辑来控制你的测试 case,如图需要把 environment.py 加到你的根目录下进行使用:

那么环境控制都支持哪些情况可以嵌入自定义代码呢?

  • before_step(context, step), after_step(context, step) 在 step 运行前或者运行后执行自定义逻辑
  • before_scenario(context, scenario), after_scenario(context, scenario) 在 scenario 运行前或者运行后执行自定义逻辑
  • before_feature(context, feature), after_feature(context, feature) 在 feature 运行前或者运行后执行自定义逻辑
  • before_tag(context, tag), after_tag(context, tag) 在每个特征文件首先找到 tag 的标识,然后在每个 tag 表示的前后执行逻辑
  • before_all(context), after_all(context) 在整个 behave 运行开始的前后执行自定义逻辑

我们可以在 environment.py 干什么事呢?比如,官网给的例子,我们一般在 UI 自动化可能会频繁的启动或者关闭浏览器就可以通过 environment.py 中设置

更多用法可以参考:
https://behave.readthedocs.io/en/stable/behave.html
https://behave.readthedocs.io/en/stable/api.html

预告

基于 behave 的用法基本就完结了,下一期会写一个简单的 demo 框架,用来串一下 之前所有的内容,欢迎想学习 behave 自动化同学可以互相交流~ 如果你会 python 我也推荐你利用 python bdd 插件以这种方式去实现自动化 case。 bdd 模式如果用一段时间还是觉得很爽的。分层清晰!

往期内容:

测试工程师进阶,从 0-1 学习 Cucumber 之基于 behave 自动化测试教程(三)

技术交流、应届生简历 review, 初中级问题解答 VX:1010584905

共收到 3 条回复 时间 点赞
仅楼主可见
兔子🐰 回复

已全部修改 复制粘贴所以链接都在...

这就是传说中的 BDD 框架么,看到某乎说 pycharm 社区版不支持,得用专业版诶。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册