现在总结下调用fixture 的方法有:
1.直接在方法参数 里填入fixture 的名字 (前面已经介绍)
2.usefixtures 指定fixture
3.autouse=True 默认调用.
1.usefixtures
usefixtures 对测试函数来讲没有多大的意义,但是非常 适合测试类.
@pytest.fixture(scope='class')
def class_scope():print("类级别的fixtue")
@pytest.mark.usefixtures('class_scope')
class Test_class():def test_func_03(self):print("执行类函数3")def test_func_04(self):print("执行类函数4")
2.autouse=True
这个是fixture 一个参数
我们可以通过指定autouse=True 选项,使作用域内的测试函数都运行该fixture.
尽量少用这个,代码可读性不高,逻辑不好控制.
import pytest@pytest.fixture(scope='function',autouse=True)
def func_scope():print("函数级别的fixtue")
@pytest.fixture(scope='module',autouse=True)
def module_scope():print("模块级别的fixtue")
@pytest.fixture(scope='session',autouse=True)
def session_scope():print("会话级别的fixtue")
@pytest.fixture(scope='class',autouse=True)
def class_scope():print("类级别的fixtue")def test_func_01():print("执行函数一")
def test_func_02():print("执行函数2")class Test_class():def test_func_03(self):print("执行类函数3")def test_func_04(self):print("执行类函数4")
执行过程 :
SETUP S session_scopeSETUP M module_scopeSETUP C class_scopeSETUP F func_scopefunc/test_add.py::test_func_01 (fixtures used: class_scope, func_scope, module_scope, session_scope).TEARDOWN F func_scopeTEARDOWN C class_scopeSETUP C class_scopeSETUP F func_scopefunc/test_add.py::test_func_02 (fixtures used: class_scope, func_scope, module_scope, session_scope).TEARDOWN F func_scopeTEARDOWN C class_scopeSETUP C class_scopeSETUP F func_scopefunc/test_add.py::Test_class::test_func_03 (fixtures used: class_scope, func_scope, module_scope, session_scope).TEARDOWN F func_scopeSETUP F func_scopefunc/test_add.py::Test_class::test_func_04 (fixtures used: class_scope, func_scope, module_scope, session_scope).TEARDOWN F func_scopeTEARDOWN C class_scopeTEARDOWN M module_scope
TEARDOWN S session_scope