Тестирование регистратора сообщений с unittest - PullRequest
0 голосов
/ 23 мая 2018

Я хотел бы проверить сообщения регистратора, не печатая их на экране во время моих тестов юнитов.Учитывая этот код:

 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 Ответ

0 голосов
/ 23 мая 2018

Вам может понадобиться использовать 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 длясписок форматированных сообщений

...