Как передать `msg` в методы unittest.mock assert?
Документы TestCase указывают, что методы assert могут принимать msg
Аргумент ключевого слова для указания сообщения для добавления контекста в утверждение:
Все методы assert принимают аргумент msg, который, если указан, используется в качестве сообщения об ошибке при сбое (см. Также longMessage).
Есть ли способ сделать это с помощью метода unittest.mock assert, в частности, assert_any_call
?
2 ответа
Глядя на источник assert_any_call
сообщение жестко закодировано:
raise AssertionError(
'%s call not found' % expected_string
) from cause
Кроме того, AssertionError
возникает непосредственно в коде, а не является следствием неудачного assert
заявление. Этот шаблон сопровождается всеми assert_*
методы в модуле. Таким образом, нет никакого способа установить пользовательское сообщение, если вы не создадите подкласс и не переопределите методы, которые вас интересуют.
Я знаю, что этот вопрос старый, но я думаю, что он все еще актуален:
Вы всегда можете просто поймать и сделать ререйз:
try:
my_mock.assert_any_call()
except AssertionError as e:
raise AssertionError("My custom message") from e