我有一个记录许多警告和信息的方法。我想测试它是否产生特定的消息(因此对于特定的测试,如果产生任何其他消息并不重要。)
目前我使用以下代码进行单元测试:
import logging
def my_method():
do_something() # may also produce logging messages
logger.info('Finished doing something.') # the message I want to unit-test
这是测试代码:
import unittest
from testfixtures import log_capture
class TestSomething(unittest.TestCase):
@log_capture()
def test_do_something(self, log_checker):
my_method()
log_checker.check(('root', 'INFO', 'Finished doing something.'))
测试失败,因为my_method()
也会生成一条日志消息:
AssertionError:序列不符合预期:
same:
()
first:
(('root',
'INFO',
'Finished doing something.'),)
second:
(('root',
'INFO',
'Busy doing something inside my_method.'),
('root',
'INFO',
'Finished doing something.'))