說明
上次和大家分享了pytest中setup/teardown的用法,這次再和大家分享一下fixture的用法。
fixtrue有什麼用法呢,setup/teardowm是适用于全局的,意思就是測試用例、子產品隻要符合就會全部執行,但有時候我隻想要部分用例去執行,部分不執行,比如:用例1需要進行登入,用例2不需要進行登入,用例3需要進行登入,那就不能再單單使用setup/teardown來實作了,這時候就可以使用fixtrue來進行實作,也就是使用fixtrue自定義測試用例的預置條件。

優點
fixtrue相比于setup/teardown來說有以下幾個優點:
- 命名方式靈活,不局限于setup/teardown這幾個命名
- scope= ‘module’可以實作多個.py跨檔案共享前置
- scope=‘session’可以實作多個.py誇檔案使用一個session來完成多個用例
代碼示範
#不帶參數時預設scope='function',也就是此時的function針對函數有效
import pytest
@pytest.fixture
def login():
print('\n輸入賬号,密碼先登入')
def test_s1(login):
print('用例1:登入之後才能做其他的事務動作')
def test_s2():
print('用例2:不需要登入,操作222')
def test_s3(login):
print('用例3:登入之後其他動作333')
if __name__ == '__main__':
pytest.main(['-s','test_fixture.py'])
從上面運作結果可以看出,test_s1、test_s3執行前自動運作了login,而test_s2并沒有執行login方法。