Вы можете создать собственный обработчик, который может проверять сообщение, отправляемое через логирование. BufferingHandler идеально подходит для этой работы.
Вы также можете присоединить обработчик в своем тесте к любому регистратору, который вы используете в своем коде, например logging.getLogger('foo').addHandler(...)
.В конечном итоге вы можете присоединить обработчик к методам setUp
и tearDown
вашего тестового примера.
import logging
import logging.handlers
class AssertingHandler(logging.handlers.BufferingHandler):
def __init__(self,capacity):
logging.handlers.BufferingHandler.__init__(self,capacity)
def assert_logged(self,test_case,msg):
for record in self.buffer:
s = self.format(record)
if s == msg:
return
test_case.assertTrue(False, "Failed to find log message: " + msg)
def cook_eggs():
logging.warn("eggs are ready!")
import unittest
class TestLogging(unittest.TestCase):
def test(self):
asserting_handler = AssertingHandler(10)
logging.getLogger().addHandler(asserting_handler)
cook_eggs()
asserting_handler.assert_logged(self,"eggs are ready!")
logging.getLogger().removeHandler(asserting_handler)
unittest.main()