Python的pytest测试框架中fixture的使用详解
一、fixture定义
fixture是处理前后置处理的,也叫测试固件,只需要使用@pytest.fixture() 即可定义
@pytest.fixture() # fixture装饰器 def first(): # 定义一个函数 print("setup...") # 函数内容
二、fixture前置处理
定义好fixture函数后,如何应用呢?通常我们只需要在测试函数中,传入Fixture的这个函数名即可
import pytest # 导入pytest @pytest.fixture() def first(): print("setup...") def test_pytest(first): # 定义测试函数,在此处引用fixture函数名即可 print("first test") if __name__ == '__main__': # 定义主函数 pytest.main() # 调用pytest
说明:在执行test_pytest函数之前,会先执行first函数,因为first是前置函数,会在测试函数之前执行。如果需要每个测试函数都自动执行,则可以设置autouse的参数为True,即autouse=True
@pytest.fixture(autouse=True) # 传入autouse参数 def first(): print("setup...")
三、Fixture的作用域
@pytest.fixture()中scope参数是控制Fixture的作用域的,可根据实际需要,调整运行方式,scope支持以下四种作用域,从大到小依次是:
- session (会话)
- module (模块)
- class (类)
- function (函数)
fixture默认的scope=function,所以我们不传的时候,默认对测试函数生效 将scope指定为class,可以实现每个测试类前执行一次 module指的是,在某个py文件执行前,执行一次,一个py文件就是一个模块 session是指pytest的会话,即所有的测试执行开始到结束,只会执行一次的操作
四、Fixture的全局作用域
如果想在多个py文件中都可以引用这个前置操作,那么可以使用公共文件进行处理,即conftest.py,这个是固定文件名称,不可修改。 这个文件在pytest中被大量使用,用于定义一些Hook相关函数以及注册全局的Fixture函数。定义在conftest.py中的Fixture,都是全局的Fixture,可以在多个py文件中去使用
conftest.py
@pytest.fixture(autouse=True) # 传入autouse参数 def first(): print("setup...")
test_first.py
def test_pytest(first): # 定义测试函数,在此处引用fixture函数名即可 print("first test")
五、Fixture的后置处理
fixture的后置处理直接使用yield即可,可以帮助我们来做分割,在yield之前的属于setup,而之后的就是teardown。
@pytest.fixture() def first(): print("setup...") yield print("teardown...")
说明:yield后的内容是执行完测试用例才会执行的,放在最后
到此这篇关于pytest中fixture的使用详解的文章就介绍到这了,更多相关pytest中的fixture内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python 图形界面框架TkInter之在源码中找pack方法
这篇文章主要介绍了Python 图形界面框架TkInter之在源码中找pack方法,根据不同的需求,选择对应的布局方式,每个控件都可以使用pack作为布局管理,下面我们就来看看从源码中找pack()在哪里,需要的朋友可以参考下2022-03-03
最新评论