1、告警資訊的預設捕獲行為
pytest
可以自動捕獲測試中產生的告警資訊,並在執行結束後進行展示;
可以通過-w arg
命令列選項來自定義告警的捕獲行為:
arg
引數的格式為:action:message:category:module:lineno
;
使用場景:
(1)忽略某一種型別的告警資訊;例如,忽略userwarning
型別的告警(-w ignore::userwarning
):
(2)將某一種型別的告警轉換為異常來處理;例如,將userwarning
告警轉換為異常處理(-w error::userwarning
):
(3)只展示某乙個模組中產生的告警;例如,只展示test_show_warnings
模組產生的告警,忽略其它所有的告警(-w ignore -w default:::test_show_warnings
):
多個-w
選項的組合操作,優先順序是從左到右依次遞增的;這裡如果將它們調換一下順序(即-w default:::test_show_warnings -w ignore
),因為-w ignore
最後生效,覆蓋掉之前的操作,最終的結果就是我們乙個告警資訊都沒有捕獲到;
(4)可以通過在pytest.ini
檔案中配置filterwarnings
項,來實現同樣的效果;例如,上述的例子在pytest.ini
的配置為:
通過為測試項新增告警過濾器,通過@pytest.mark.filterwarnings
新增的過濾器優先順序要高於命令列或pytest.ini
新增的過濾器;可以通過將@pytest.mark.filterwarnings
應用於測試類來為這個類中所有的用例新增告警過濾器;
3、去使能告警資訊顯示
通過--disable-warnings
命令列選項來禁止告警資訊的展示
4、通過-p no:warnings
命令列選項徹底禁止告警的捕獲行為:
5、deprecationwarning
和pendingdeprecationwarning告警
pytest
會預設捕獲deprecationwarning
和pendingdeprecationwarning
型別的告警;可以通過在pytest.ini
新增配置;例如,忽略告警資訊匹配".*u.*mode is deprecated"
的deprecationwarning
告警:
(1)pytest.deprecated_call方法
通過deprecated_call
方法確保一段**觸發了deprecationwarning
或pendingdeprecationwarning
告警:
6、編寫觸發期望告警的斷言
使用pytest.warns()
作為上下文管理器,來編寫乙個觸發期望告警的斷言,它和pytest.raises()
的用法很接近;
(1)自定義失敗是的告警資訊
如果api_call_v1
沒有觸發任何告警,pytest
就會顯示pytest.fail
中自定義的提示訊息;
7、通過recwarn
來實現同樣的功能;
recwarn
是乙個用例級別的fixture
,它可以記錄用例產生的所有的告警;recwarn
和之前pytest.warns()
返回值一樣,都是乙個warningsrecorder
的例項;
8、pytest自定義的告警型別
pytest
本身封裝了一些告警的型別,並作為公共介面以供使用者使用; 一些常見的內部告警:
告警父類
描述pytestwarning
userwarning
所有告警的父類;
pytestcollectionwarning
pytestwarning
不能夠收集某個模組中的用例;
pytestconfigwarning
pytestwarning
配置錯誤;
pytestunknownmarkwarning
pytestwarning
使用了未知的標記;
參考:
Promise捕獲報錯資訊小記
function ss resolve,reject function test function error catch function err test 捕獲報錯知識點 ss 方法裡報錯,捕獲錯誤資訊方式為 then function value function error then 方法內...
Perl中捕獲警告資訊 異常資訊並寫入日誌詳解
雖然建議在每個perl指令碼和模組中開啟警告,可是你又不想使用者看到perl發出的警告。一方面你想在 前面使用use warnings作為你的安全網,另一方面,通常警告會出現在螢幕上。多數情況下,客戶不知道如何處理這些警告。如果幸運的話這些警告僅僅讓客戶驚訝一下,當然,不幸的是他們嘗試著去修復它們....
python異常資訊捕獲方法整理歸納
方法一 try print 1 0 except exception,con print exception,con con可以換成其它的名字 方法二 try print 1 0 except import traceback traceback.print exc 將異常資訊列印在直譯器上 以下是...