簡體   English   中英

py.test日志控制

[英]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現在通過caplog fixture caplog支持日志控制; 不需要插件。

您可以指定特定記錄器的日志記錄級別,或者默認情況下為根記錄器指定日志記錄級別:

import pytest

def test_bar(caplog):
    caplog.set_level(logging.CRITICAL, logger='root.baz')

Pytest還捕獲日志輸出caplog.records這樣你就可以斷言記錄的水平和消息。 有關詳細信息,請參閱此處此處的官方文檔。

稍后的貢獻:你可以試試pytest-logger 這個插件的新穎性是記錄到文件系統:pytest為每個測試項提供nodeid,可以用來組織測試會話日志目錄(借助pytest tmpdir工具和它的testcase開始/結束掛鈎)。

您可以分別為終端和文件系統配置多個處理程序(具有級別),並提供自己的cmdline選項以過濾記錄器/級別,使其適用於您的特定測試環境 - 例如,默認情況下,您可以將所有文件系統和小部分記錄到終端,如果需要,可以使用--log選項在每個會話的基礎上更改。 如果用戶沒有定義鈎子,插件默認不執行任何操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM