如何测试消息是否出现在长日志中?

时间:2015-01-21 17:19:38

标签: python unit-testing logging

我有一个记录许多警告和信息的方法。我想测试它是否产生特定的消息(因此对于特定的测试,如果产生任何其他消息并不重要。)

目前我使用以下代码进行单元测试:

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.'))

0 个答案:

没有答案