2

我想测试日志记录是否正常工作,但我无法使用 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到标准输出,但 pytest 仅在使用打印而不是日志时捕获标准输出的输出。

如何让 pytest 捕获日志的标准输出?

4

1 回答 1

0

尝试使用capfd而不是capsys.

于 2020-09-09T01:31:04.747 回答