【pytest】fixture 与 setup, teardown 的优先级

fixture 的使用方法

- conftest.py

@pytest.fixture(scope='function') # 作用域通常有:session, class, function
def TestInit():
    logger.info('yield前的代码执行时机与setup类似')
    yield # 这里可以返回一个对象
    logger.info('yield后的代码执行时机与teardown类似')

setup, teardown 的使用方法

- testcase.py

以函数为主体的测试用例

def setup_function():   
    logger.info('setup启动了')

def teardown_function():
    logger.info('teardown启动了')

以类为主体的测试用例

class TestCaseBase: # 作用域域fixture类似,但是没有function
    def setup_method():
        pass
    def teardown_method():
        pass

fixture 与 setup、teardown 在执行测试用例时的执行顺序

fixture 与 setup 在相同作用域下:

开始 ---> setup ---> fixture ---> fixture ---> teardown ---> 结束

2024-07-19 13:51:07.067 | INFO     | base.testCaseBase:setup_method:15 - setup 启动了
2024-07-19 13:51:07.068 | INFO     | testCase.conftest:TestInit:13 - fixture启动了
2024-07-19 13:51:46.024 | INFO     | testCase.conftest:TestInit:17 - fixture结束了
2024-07-19 13:51:46.421 | INFO     | base.testCaseBase:teardown_method:18 - teardown 启动了

在不同作用域下:

开始 ---> session ---> package ---> module ---> class ---> function(默认) ---> 结束


↙↙↙阅读原文可查看相关链接,并与作者交流