如何将“msg”传递给unittest.mock断言方法?

seq*_*ell 5 python unit-testing mocking

TestCase文档指定断言方法可以采用可选关键字参数来指定消息msg将上下文添加到断言:

所有的断言方法都接受一个msg参数,如果指定的话,该参数将用作失败时的错误消息(另请参见 longMessage)。

有没有办法用unittest.mock断言方法来做到这一点,特别是assert_any_call

sna*_*erb 4

查看 的来源assert_any_call该消息是硬编码的:

raise AssertionError(
    '%s call not found' % expected_string
) from cause
Run Code Online (Sandbox Code Playgroud)

此外,AssertionError是直接在代码中引发的,而不是失败assert语句的结果。assert_*模块中的所有方法都遵循此模式。因此,除非您子类化并重写您感兴趣的方法,否则无法设置自定义消息。