Pytest--fixture詳解
阿新 • • 發佈:2021-09-07
fixture
-
fixture介紹
1.命名方式靈活,不侷限於setup和teardown這幾個命名
2.conftest.py配置裡可以實現資料共享 -
fixture原始碼詳解
@pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None)
引數說明:
scope:標記方法的作用域(functipn,class,module,session上篇文章有介紹)
params:一個可選的引數列表,它將導致多個引數呼叫fixture功能和所有測試使用它
autouse:預設:False,需要用例手動呼叫該fixture;如果是True,所有作用域內的測試用例都會自動呼叫該fixture
ids:每個字串id的列表,每個字串對應於params這樣他們就是測試ID的一部分。如果沒有提供ID它們將從params自動生成
name:fixture的名稱。這預設為裝飾函式的名稱。如果fixture在定義它的統一模組中使用,夾具的功能名稱將被請求夾具的功能arg遮蔽,解決這個問題的一種方法時將裝飾函式命令"fixture_"然後使用"@pytest.fixture(name=' ')" -
fixture具體使用
1.將fixture作為測試函式的輸入引數
#conftest.py import pytest @pytest.fixture(scope='function', autouse=False) def open_server(): a = 1 print('---開啟服務---') return a @pytest.fixture(scope='function', autouse=False) def close_server(): print('---關閉服務---') #test_case.py def test_run(self, open_server): print('---開始執行用例---') assert open_server == 1 #結果 test_001_case.py::TestCase001::test_run demo ---開啟服務--- PASSED [100%]---開始執行用例---
2.assert在fixture裡,斷言失敗就是error
@pytest.fixture()
def user():
print("獲取使用者名稱")
name = "xoxo"
assert name == "oxox" # fixture失敗就是error
return name