当前位置: 代码迷 >> 综合 >> Pytest09 :fixture 的usefixtures和autouse特性.
  详细解决方案

Pytest09 :fixture 的usefixtures和autouse特性.

热度:94   发布时间:2023-10-24 21:17:07.0

现在总结下调用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