pytest的fixture框架的autouse参数有何用
Admin 2022-08-04 群英技术资讯 946 次浏览
这篇文章主要介绍“pytest的fixture框架的autouse参数有何用”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytest的fixture框架的autouse参数有何用”文章能帮助大家解决问题。pytest 当中的 fixture, 默认情况下在定义好之后,需要测试用例/测试类主动请求使用,才会执行。
但是它有一个参数叫做 autouse,默认是 False。
关闭 fixture 的自动调用/自动执行功能。
如果设置 autouse=True,则表示这个 fixture 在它的作用域范围内都会自动化执行。
分为 2 种情况,接下来举例说明。
如果 fixture 设置了 autouse=True,只会在测试类类内部生效。测试类以外的用例不受影响。
定义一个 test_pytest-autouse.py,定义一个 TestDemo 类。
在其中定义 2 个 fixture,一个设置了 autouse=True,另外一个使用默认值 False

执行结果:

conftest.py 能影响到所有测试类/测试用例都会执行(依据 fixture 的作用域决定在哪个范围内执行)。
有如下的目录结构:

测试用例文件(test_autouse1.py,test_autouse2.py)当中,并没有使用@pytest.mark.usefixture("func_fix")来主动请求 fixture.

conftest.py 文件中的内容如下:

名为 func_fix 的 fixture 设置了 autouse=True,它的作用域为 function, 那么
在 pytest20210301 包下的每一个测试用例,在执行用例之前都会执行它的前置准备动作,在执行用例之后都会执行它的后置清理动作。
执行 main.py(收集用例并执行)文件的结果如下:

基于以上情况,一般 function、class、module 级别的 fixture,都不会去开启 autouse=True
不同的测试用例/测试类,对于前置准备工作和后置清理工作的需求并不完全一样。
如果开启了 autouse=True, 那么不管测试用例/测试类是否需要,都会去执行。
让测试用例/测试类根据实际需求主动来请求使用 fixture 才是正确之道。
pytest 的 fixture 除了 function 和 class 以外,还有 session 和 module 级别。
这里的 session 是指测试会话。
它指的是:从 pytest 开始收集用例,到执行用例完成的整个过程,为一次会话。
比如收集到了 100 个测试用例要执行,那么 session 夹具夹的就是这 100 个用例。
比如收集到了 30 个测试用例要执行,那么 session 夹具夹的就是这 30 个用例。
由于它在所有用例执行的过程中,只执行一次。
如果定义了 session 级别的 fixture,那说明你就是需要执行它的。
所以它是可以设置 autouse=True 的。
我们在做自动化测试的时候,如果有些前置准备工作是为整个测试会话做的,那么可以定义 session 级别的,比如清理/创建一些文件等。
还是以上面的用例结构为例,在 conftest.py 当中添加 session 级别的 fixture,并设置为 autouse=True:

执行结果如下:

module 是指测试 py 文件,夹具夹的是整个 test_*.py 文件里的测试用例。
在 test_*.py 里,哪一行代码调用了 module 级别的 fixture,那么夹的就是那行代码之后的所有测试用例。
举例来说明。还是以上面的用例结构为例,在 conftest.py 当中添加 module 级别的 fixture:

在 test_autouse2.py 当中,调用 module 级别的 fixture,但并未在第一个用例前调用。

执行结果如下:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了对pytorch中不定长序列补齐的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python列表创建与销毁及缓存池机制,文章基于python展开对列表创建与销毁内容的展开,具有一定的参考价值,需要的小伙伴可以参考一下
Pandas是Python语言的一个扩展程序库,提供高性能、易于使用的数据结构和数据分析工具,下面这篇文章主要给大家介绍了关于如何使用pandas对超大csv文件进行快速拆分的相关资料,需要的朋友可以参考下
通用网络爬虫是搜索引擎抓取系统(Baidu、Google、Sogou等)的一个重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。为搜索引擎提供搜索支持。
这篇文章介绍了Python中深拷贝与浅拷贝的区别,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008