🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
目前大家听到比较多的单元测试框架,无非就是pytest和unittest。unittest是老框架了,很多人都用来做自动化,无论是UI还是接口。pytest是基于unittest开发的另一款更高级更好用的单元测试框架,无论面试还是工作使用频率都很高,势头略胜unittest。
pytest 的官方网站介绍,它具有如下特点:
l 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
l 能够支持简单的单元测试和复杂的功能测试
l 支持参数化
l 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
l 支持重复执行(rerun)失败的 case
l 支持运行由 nose, unittest 编写的测试 case
l 可生成 html 报告
l 方便的和持续集成工具 jenkins 集成
l 可支持执行部分用例
l 具有很多第三方插件,并且可以自定义扩展
我相信大家应该或多或少的用过pytest框架,那么今天这篇文章就给大家分享一下大家可能不太知道的pytest的高级用法。主要讲解一下conftest.py和fixture装置函数。
conftest.py是什么呢?可以理解成一个专门存放fixture的配置文件。可以单独管理一些全局的fixture。
conftest.py配置fixture注意事项
· pytest会默认读取conftest.py里面的所有fixture
· conftest.py 文件名称是固定的,不能改动
· conftest.py只对同一个package下的所有测试用例生效
· 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
· 测试用例文件中不需要手动import conftest.py,pytest会自动查找
那fixture函数又是什么呢?小朋友你是不是有很多问号?
fixture可以让我们自定义测试用例的前置条件
fixture的优势
· 命名方式灵活,不局限于 setup 和teardown 这几个命名
· conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture
· scope=“module” 可以实现多个.py 跨文件共享前置
· scope=“session” 以实现多个.py 跨文件使用一个 session 来完成多个用例
fixture函数的语法如下
参数含义:
scope:可以理解成fixture的作用域,默认:function,还有class、module、package、session四个【常用】
autouse:默认:False,需要用例手动调用该fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture
name:默认:装饰器的名称,同一模块的fixture相互调用建议写个不同的name
调用方法:
只需要在引用fixture函数的测试用例里面传入被@pytest.fixture这个装饰器装饰的函数的名字即可,就会调用fixture函数中定义的功能,用yield关键字去划分是setup还是teardown,yield前面实现的功能是setup初始化功能,yield后面实现的功能是teardown清场功能。
接下来实现一下豆瓣登录的测试用例的书写,项目结构如下
case—测试用例,代码如下:
base_driver—封装app的driver
conftest.py里面定义了全局的fixture函数
命令行执行如下命令进行case的执行:
这样就可以实现豆瓣的登录功能,在函数级别的测试用例执行完之后,等待3秒钟,driver就会自动退出。
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!