'Wildcard'用于使用Python的testfixtures模块检查捕获的日志输出

时间:2017-01-20 15:32:08

标签: python unit-testing testing

我正在为服务器程序编写一些单元测试,该程序捕获大多数异常,但记录它们,并希望在记录的输出上进行断言。我发现testfixtures包对此有用;例如:

import logging
import testfixtures

with testfixtures.LogCapture() as l:
    logging.info('Here is some info.')

l.check(('root', 'INFO', 'Here is some info.'))

documentation之后,如果记录器名称,级别或消息不符合预期,check方法将引发错误。

我想执行一种更“灵活”的测试,在该测试中,我使用通配符对元组的其他元素进行消息断言。这种不太严格的断言看起来像

l.check((*, *, 'Here is some info.'))

但这不是有效的语法。有没有办法在check类的testfixtures.logcapture.LogCapture方法中指定“通配符”?

1 个答案:

答案 0 :(得分:0)

仅检查邮件的方式(正如作者指出的那样,实际上在documentation中有描述)是使用records类的LogCapture属性,这是logging.LogRecord个对象的列表。所以适当的断言是:

assert l.records[-1].getMessage() == 'Here is some info.'