[英]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.