代码之家  ›  专栏  ›  技术社区  ›  Ray Salemi

使用UnitTest测试记录器消息

  •  2
  • Ray Salemi  · 技术社区  · 6 年前

    我想测试记录器消息,而不将它们打印到UnitTests的屏幕上。给定此代码:

     import logging
     logging.basicConfig(level=logging.ERROR)
     logger = logging.getLogger('test')
     logger.warning('this is a warning')
    
     # How do I see that there was a warning?
    

    如何查看记录器中的日志记录以查看是否存在警告?我在logger中找不到可以完成该工作的迭代器。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Antwane    5 年前

    您可能需要使用 TestCase.assertLogs() 在这种情况下,上下文管理器。文档提供了一个很好的示例,说明了如何使用它:

    with self.assertLogs('foo', level='INFO') as cm:
       logging.getLogger('foo').info('first message')
       logging.getLogger('foo.bar').error('second message')
    self.assertEqual(cm.output, ['INFO:foo:first message',
                                 'ERROR:foo.bar:second message'])
    

    在上下文管理器中,您可以访问 cm.records 关于 LogRecord 实例,或 cm.output 获取格式化消息列表