问题描述
的标准输出
class MyLogger(Logger):
def __init__(self,name):
super().__init__(name)
stdout = StreamHandler(sys.stdout)
stdout.setLevel(10)
self.addHandler(stdout)
class Foo:
def __init__(self):
self.log = MyLogger(__name__)
记录器使用以下示例:
f = Foo()
f.log.debug("Test logger")
这会将 Test logger
打印到标准输出
我正在尝试进行一些单元测试并使用 caplog 来断言某些日志发生。如下图:
def test_fetch(caplog):
f = Foo()
with caplog.at_level(logging.DEBUG):
f.log.debug("Test logger again")
assert "Test logger again" in caplog.text
此测试失败,因为在断言语句(或其他任何地方)处的 caplog 为空。然而,使用标准记录器的相同测试通过了:
def test_fetch(caplog):
# f = Foo()
with caplog.at_level(logging.DEBUG):
logging.getLogger(__name__).debug("Test logger again")
assert "Test logger again" in caplog.text
为什么会这样?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)