【pytest】fixture 與 setup, teardown 的優先順序

adogs發表於2024-07-29

【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(預設) ---> 結束

相關文章