我正在为服务器程序编写一些单元测试,该程序捕获大多数异常,但记录它们,并希望在记录的输出上进行断言。我发现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
方法中指定“通配符”?
答案 0 :(得分:0)
仅检查邮件的方式(正如作者指出的那样,实际上在documentation中有描述)是使用records
类的LogCapture
属性,这是logging.LogRecord个对象的列表。所以适当的断言是:
assert l.records[-1].getMessage() == 'Here is some info.'