unittest的assertLogs()无法从LoggerADP捕获日志

2024-09-27 22:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试了here给出的方法来测试我的日志,如下所示:

class LoggingTest(TestCase):
    def test_log_decorator(self):
        with self.assertLogs() as log:
            # get_logger() return a LoggerAdapter, not a Logger
            logger = logging.get_logger('my_logger')

            @log_with_timer(logger)
            def log_ok_with_timer():
                return True

            log_ok_with_timer()
            self.assertRegex(
                log.output[1],
                r"INFO my_logger Function 'log_ok_with_timer'"
                r" took \d+\.\d{4} s$",
            )

我想更改日志的格式,并添加一些附加信息。因此,在作为最后一步创建记录器时,我会return logging.LoggerAdapter(logger, extra)。这个测试失败了,原因是,在我看来,assertLogs只能捕获Logger,而不能捕获LoggerAdapter。那么我应该如何解决这个问题呢?我怎样才能抓到圆木


Tags: selfloggetreturnheremyloggingdef

热门问题