pytest中fixture,pytest实现fixture的原理
本文详细解释了Pytest框架的fixture,通过示例代码对其进行了非常详细的介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。
相关文章
Py框架夹具说明(1)
Py框架夹具说明(2)
Py框架夹具说明(三)
本文关于夹具的内容如下:
在模块级自动使用夹具和夹具
1、fixture 的 autouse 参数
的参数会话。
默认情况下,Py中的fixture只有在被定义并且测试用例/测试类主动请求使用它之后才会被执行。
但是它有一个名为autouse的参数,默认为False。
关闭夹具的自动调用/执行功能。
如果设置了autouse=True,这意味着这个fixture将在其作用域内自动执行。
可以分为两种情况。接下来举个例子。
第 1 种情况:当定义的 fixture 在测试类内部时
如果fixture设置autouse=True,它将只在测试类内部生效。测试之外的用例不受影响。
定义一个test_pytest-autouse.py和一个TestDemo类。
其中定义了两个fixture,一个使用autouse=True,另一个使用默认值False。
执行结果:
第 2 种情况,在 conftest.py 当中的 fixture 设置 autouse=True
Conftest.py可以影响所有测试类/测试用例将被执行(取决于fixture的范围,将执行哪个范围)。
有以下目录结构:
在测试用例文件(test_autouse1.py,test_autouse2.py)中,@ py test . mark . use fixture( func _ fix )不用于主动请求fixture。
conftest.py文件的内容如下:
名为func_fix的fixture设置了autouse=True,它的作用域是function,所以
pytest20210301包下的每一个测试用例在执行之前都会执行它的预准备动作,在执行之后会执行它的后清理动作。
执行main.py(收集用例并执行它们)文件的结果如下:
基于上述情况,通用函数、类和模块级fixture不会打开autouse=True。
不同的测试用例/测试类对前期准备和后期清理有不同的要求。
如果autouse=True被打开,那么不管测试用例/测试类是否需要它,它都会被执行。
测试用例/测试类根据实际需要主动请求使用fixture才是正道。
2、session 和 module 级别的 fixture
除了函数和类,pytest的fixture还有会话和模块级别。
session 级别的 fixture
这里的会话指的是测试会话。
它指的是:从pytest到用例收集、用例执行的整个过程是一个会话。
例如,如果收集了100个要执行的测试用例,那么会话夹具将保存这100个测试用例。
例如,如果收集了30个要执行的测试用例,那么会话夹具将保存这30个测试用例。
因为它在所有用例的执行过程中只执行一次。
如果定义了会话级fixture,这意味着您需要执行它。
所以它可以设置autouse=True。
当我们进行自动化测试时,如果为整个测试会话做了一些准备工作,那么我们就可以定义会话级别,比如清理/创建一些文件等。
或者以上面的用例结构为例,在conftest.py中添加会话级fixture,并设置为autouse=True:
执行结果如下:
module 级别的 fixture
模块引用测试py文件,fixture保存整个test_*中的测试用例。py文件。
测试中_*。py,哪一行代码调用了模块级fixture,那么那一行代码之后的所有测试用例都包含在内。
为了说明。或者以上面的用例结构为例,在conftest.py中添加模块级fixture:
在test_autouse2.py中,调用了模块级的fixture,但是在第一个用例之前没有调用它。
执行结果如下:
关于Pytest框架的fixture,本文到此结束。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。