软件测试学习笔记丨 Pytest–Fixture 特点及优势
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/30137
Fixture 特点及优势
命令灵活:对于 setup,teardown,可以不起这两个名字
数据共享:在 conftest.py 配置里写方法可以实现数据共享,不需要 import 导入。可以跨文件共享
scope 的层次及神奇的 yield 组合相当于各种 setup 和 teardown
实现参数化
Fixture 在自动化中的基本用法
场景
1、测试用例执行时,有的用例需要登陆才能执行,有些用例不需要登陆。
2、setup 和 teardown 无法满足的场景,fixture 可以,默认 scope(范围)function
步骤
1、导入 pytest
2、在登陆的函数上面加 @pytest.fixture()
3、在要使用的测试方法中传入(登陆函数名称),就先登陆
4、不传入的就不登陆直接执行测试方法
Fixture 在自动化中的应用-作用域
Fixture 在自动化中的应用-yield 关键字
场景
你已经可以将测试方法[前要执行的或依赖的]解决了
解决
通过在 fixture 函数中加入 yield 关键字,yield 是调用第一次返回结果,第二次执行它下面的语句返回
步骤
在 @pytest.fixture(scope = module)在登陆的方法中加 yield,之后加销毁清除的步骤
Fixture 在自动化中的应用-数据共享
场景
与其他测试工程师合作一起开发时,公共的模块要在不同文件中,要在大家都能访问到的地方
解决
使用 conftest.py 这个文件进行数据共享,并且他可以放在不同位置起者不同的范围共享作用
前提
1、conftest 文件名是不能换的
2、放在项目下是全局的数据共享的地方
执行
1、系统执行到参数 login 时,先从本模块中查找是否有这个名字的变量
2、之后再在 conftest.py 中找是否有这个名字的变量
步骤
将登陆模块带 @pytest.fixture 写在 conftest.py 文件中
Fixture 在自动化中的应用-自动应用
场景
1、不想原测试方法有任何改动,或者全部都自动实现自动应用
2、没特例,也都不需要返回值时可以选择自动应用
解决
使用 fixture 中参数 autouse=True 实现
步骤:
在方法上面加 @pytest.fixture(autouse=True)
Fixture 在自动化中的应用-参数化
场景
测试离不开数据,为了数据灵活,一般数据都是通过参数传的
解决
fixture 通过固定参数 request 传递
步骤
1、在 fixture 中增加 @pytest.fixture(params=[1,2,3,‘linda’])
2、在方法参数写 request,方法体里面使用 request.param 接收参数
Fixture 的用法总结
模拟 setup,teardown(一个用例可以引用多个 fixture)
yield 的用法
作用域(session,module,类级别,方法级别)
自动执行(autouse 参数)
conftest.py 用法,一般会把 fixture 写在 conftest.py 文件中(这个文件名字是固定的,不能改)
实现参数化
免费领取:测试资料+测试用例+简历模板+测试文档
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/7ff0bb95adb806d5efca6bded】。文章转载请联系作者。
评论