现在总结下调用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_scope
SETUP M module_scope
SETUP C class_scope
SETUP F func_scope
func/test_add.py::test_func_01 (fixtures used: class_scope, func_scope, module_scope, session_scope).
TEARDOWN F func_scope
TEARDOWN C class_scope
SETUP C class_scope
SETUP F func_scope
func/test_add.py::test_func_02 (fixtures used: class_scope, func_scope, module_scope, session_scope).
TEARDOWN F func_scope
TEARDOWN C class_scope
SETUP C class_scope
SETUP F func_scope
func/test_add.py::Test_class::test_func_03 (fixtures used: class_scope, func_scope, module_scope, session_scope).
TEARDOWN F func_scope
SETUP F func_scope
func/test_add.py::Test_class::test_func_04 (fixtures used: class_scope, func_scope, module_scope, session_scope).
TEARDOWN F func_scope
TEARDOWN C class_scope
TEARDOWN M module_scope
TEARDOWN S session_scope