[英]py.test logging control
我們最近切換到py.test進行python測試(這是非常棒的btw)。 但是,我正在試圖弄清楚如何控制日志輸出(即內置的python日志記錄模塊)。 我們安裝了pytest-capturelog,這可以按預期工作,當我們想查看日志時,我們可以通過--nologcapture選項。
但是,如何控制日志記錄級別(例如信息,調試等)並過濾日志記錄(如果您只對特定模塊感興趣)。 是否有py.test的現有插件來實現這一點,還是我們需要自己動手?
謝謝,強尼
安裝和使用pytest-capturelog插件可以滿足您的大部分pytest / logging需求。 如果缺少某些東西,你應該能夠相對容易地實現它。
正如Holger所說,你可以使用pytest-capturelog :
def test_foo(caplog):
caplog.setLevel(logging.INFO)
pass
如果您不想使用pytest-capturelog,可以在日志配置中使用stdout StreamHandler ,這樣pytest將捕獲日志輸出。 這是一個basicConfig示例
logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)
這是一個晚期的貢獻,但我可以推薦pytest-logging用於簡單的嵌入式日志記錄捕獲解決方案。 在pip install pytest-logging
您可以使用控制pip install pytest-logging
的詳細程度(顯示在屏幕上)
$ py.test -s -v tests/your_test.py
$ py.test -s -vv tests/your_test.py
$ py.test -s -vvvv tests/your_test.py
等等... NB - -s
標志很重要,沒有它py.test
將過濾掉所有sys.stderr
信息。
稍后的貢獻:你可以試試pytest-logger 。 這個插件的新穎性是記錄到文件系統:pytest為每個測試項提供nodeid,可以用來組織測試會話日志目錄(借助pytest tmpdir工具和它的testcase開始/結束掛鈎)。
您可以分別為終端和文件系統配置多個處理程序(具有級別),並提供自己的cmdline選項以過濾記錄器/級別,使其適用於您的特定測試環境 - 例如,默認情況下,您可以將所有文件系統和小部分記錄到終端,如果需要,可以使用--log
選項在每個會話的基礎上更改。 如果用戶沒有定義鈎子,插件默認不執行任何操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.