【发布时间】:2020-06-15 07:04:45
【问题描述】:
我想测试日志记录是否正常工作,但我无法使用 pytest 从日志中捕获日志。
这是一个演示问题的简单示例:
import sys
import logbook
logbook.StreamHandler(sys.stdout, level=logbook.INFO).push_application()
def use_print():
print("This is a dummy message using print")
def test_print(capsys):
use_print()
out, err = capsys.readouterr()
assert err == ""
assert "dummy" in out
def use_logbook():
log = logbook.Logger("Dummy Log")
log.info("This is a dummy message using logbook")
def test_logbook(capsys):
use_logbook()
out, err = capsys.readouterr()
assert err == ""
assert "dummy" in out
print 和 logbook 都输出到 stdout,但 pytest 仅在使用 print 时捕获 stdout 的输出,而不是 logbook。
如何让 pytest 捕获日志的标准输出?
【问题讨论】: