天天看點

Pytest學習—fixtrue

說明

上次和大家分享了pytest中setup/teardown的用法,這次再和大家分享一下fixture的用法。

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

Pytest學習—fixtrue

優點

fixtrue相比于setup/teardown來說有以下幾個優點:

  1. 命名方式靈活,不局限于setup/teardown這幾個命名
  2. scope= ‘module’可以實作多個.py跨檔案共享前置
  3. 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'])
           
Pytest學習—fixtrue

從上面運作結果可以看出,test_s1、test_s3執行前自動運作了login,而test_s2并沒有執行login方法。