pytest官方文檔解讀Fixture?errors拋錯解決
既然fixtures函數也是咱們自己寫的,那難免會發(fā)生異常,當fixture函數異常后,pytest中如何處理呢?
首先,在pytest中,如果一個測試函數中傳入了多個fixture函數,那么pytest會盡可能的按線性順序先后執(zhí)行。
如果,先執(zhí)行的fixture函數有問題引發(fā)了異常,那么pytest將會停止執(zhí)行這個測試函數的fixture,并且標記此測試函數有錯誤。
但是,當測試被標記為有錯誤時,并不是說這個測試函數的結果失敗了,這僅僅意味著測試函數所依賴的fixture有問題,
導致測試函數不能正常進行。
所以,這就引出了另一個值得關注的點:fixture雖靈活好用,切記不要濫用。
在實際應用中,要盡可能的減少不必要的依賴關系。這樣的話,測試函數就不會因為其他不相關的問題,導致自己不能正常運行。
結合代碼示例,進一步了解:
import pytest @pytest.fixture def order(): return [] @pytest.fixture def append_first(order): order.append(1) @pytest.fixture def append_second(order, append_first): order.extend([2]) @pytest.fixture(autouse=True) def append_third(order, append_second): order += [3] def test_order(order): assert order == [1, 2, 3]
首先聲明,這段代碼是可以正常運行的,測試函數test_order也是正常通過的。
假設,不管怎樣,在order.append(1)處總會報錯。這時候,我們其實無法確定order.extend([2])或order +=[3]是否也有問題。
在append_first報錯拋出異常后,pytest就不會繼續(xù)運行任何的fixture函數了,就連測試函數test_order本身也不會運行。
以上就是pytest官方文檔解讀Fixture errors拋錯解決的詳細內容,更多關于pytest Fixture errors拋錯的資料請關注腳本之家其它相關文章!
相關文章
python實現自動化報表功能(Oracle/plsql/Excel/多線程)
這篇文章主要介紹了python實現自動化報表(Oracle/plsql/Excel/多線程)的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12Python類方法__init__和__del__構造、析構過程分析
這篇文章主要介紹了Python類方法__init__和__del__構造、析構過程分析,本文分析了什么時候構造、什么時候析構、成員變量如何處理、Python中的共享成員函數如何訪問等問題,需要的朋友可以參考下2015-03-03