W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
pytest -x # stop after first failure
pytest --maxfail=2 # stop after two failures
Python 帶有一個名為 ?pdb
的內(nèi)置 Python 調(diào)試器。 pytest 允許通過命令行選項進入 ?pdb
提示符:
pytest --pdb
這將在每次失敗(或?KeyboardInterrupt
?)時調(diào)用Python調(diào)試器。通常,你可能只希望在第一個失敗的測試中這樣做,以了解特定的失敗情況:
pytest -x --pdb # drop to PDB on first failure, then end test session
pytest --pdb --maxfail=3 # drop to PDB for first three failures
請注意,在任何失敗時,異常信息都存儲在 ?sys.last_value
?、?sys.last_type
? 和 ?sys.last_traceback
? 中。 在交互式使用中,這允許人們使用任何調(diào)試工具進行事后調(diào)試。 也可以手動訪問異常信息,例如:
>>> import sys
>>> sys.last_traceback.tb_lineno
42
>>> sys.last_value
AssertionError('assert result == "ok"',)
pytest 允許在每個測試開始時通過命令行選項立即進入pdb
提示符:
pytest --trace
這將在每次測試開始時調(diào)用Python調(diào)試器。
要在代碼中設(shè)置斷點,請在代碼中使用原生 ?Python import pdb;pdb.set_trace()
? 調(diào)用,pytest 會自動禁用該測試的輸出捕獲:
Python 3.7 引入了一個內(nèi)置的 ?breakpoint()
? 函數(shù)。 Pytest 支持使用具有以下行為的 ?breakpoint()
?:
breakpoint()
? 并將 ?PYTHONBREAKPOINT
設(shè)置為默認值時,pytest 將使用自定義內(nèi)部PDB
跟蹤 UI 而不是系統(tǒng)默認Pdb
?。Pdb
跟蹤 UI。--pdb
? 傳遞給 pytest 后,自定義內(nèi)部 ?Pdb
跟蹤 UI 將與 ?breakpoint()
? 和失敗的測試/未處理的異常一起使用。--pdbcls
? 可用于指定自定義調(diào)試器類。?faulthandler
標準模塊可用于在錯誤或超時后轉(zhuǎn)儲 Python 回溯。
該模塊會自動啟用 pytest 運行,除非在命令行上給出 ?-p no:faulthandler
?。
如果測試完成時間超過 X 秒(在 Windows 上不可用),?faulthandler_timeout=X
? 配置選項也可用于轉(zhuǎn)儲所有線程的回溯。
注意:
此功能已從外部 ?pytest-faulthandler
? 插件集成,有兩個小區(qū)別:
-p no:faulthandler
? 而不是 ?--no-faulthandler
?:前者可以與任何插件一起使用,因此它節(jié)省了一個選項。--faulthandler-timeout
? 命令行選項已成為 ?faulthandler_timeout
? 配置選項。 它仍然可以使用 ?-o faulthandler_timeout=X
? 從命令行進行配置。這些功能僅適用于 Python>=3.8。
未處理的異常是在無法傳播給調(diào)用者的情況下引發(fā)的異常。 最常見的情況是 ?__del__
? 實現(xiàn)中引發(fā)的異常。
未處理的線程異常是在 ?Thread
中引發(fā)但未處理的異常,導(dǎo)致線程不干凈地終止。
這兩種類型的異常通常都被認為是錯誤,但可能會被忽視,因為它們不會導(dǎo)致程序本身崩潰。 Pytest 檢測到這些情況并發(fā)出在測試運行摘要中可見的警告。
插件會自動啟用 pytest 運行,除非在命令行上給出了 ?-p no:unraisableexception
? (用于不可引發(fā)的異常)和 ?-p no:threadexception
? (用于線程異常)選項。
可以使用 ?pytest.mark.filterwarnings
? 標記選擇性地使警告靜音。 警告類別為 ?pytest.PytestUnraisableExceptionWarning
? 和 ?pytest.PytestUnhandledThreadExceptionWarning
?。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: