【发布时间】:2017-09-29 12:10:56
【问题描述】:
我发现了许多关于如何断言已记录的示例,例如 http://www.michaelpollmeier.com/python-mock-how-to-assert-a-substring-of-logger-output
但是我不知道如何将断言与构建消息的特定方式分离。该测试只关心记录的特定 id。
测试代码
mock_logger.warn.assert_called_with(
all_match(
contains_string('user-id'),
contains_string('team-id')
)
)
两者都适用
生产代码1(记录器组装消息):
logger.warn(
"Order for team %s and user %s could not be processed",
'team-id',
'user-id'
)
和
生产代码 2(我们组装消息并包含异常):
logger.warn(
"Order for team {} and user {} could not be processed"
.format('team-id', 'user-id'),
ex
)
这不会按原样工作,但我正在考虑捕获参数或设置自定义日志附加器并对最终消息进行断言。
请忽略任何拼写错误/潜在的语法错误,因为我没有在 IDE 中编写代码
【问题讨论】:
标签: python unit-testing logging python-mock