Я отвечу на свой вопрос.
Я неправильно понял использование msg
. Из официальной документации Python :
Все методы assert принимают аргумент msg, который, если указан, используется в качестве сообщения об ошибке при ошибке.
Это для целей отладки.
например,
import unittest
CORRECT_MESSAGE = 'Correct message'
WRONG_MESSAGE = 'Wrong message'
def fn():
return
# Don't raise an exception.
# raise KeyError(CORRECT_MESSAGE)
class Test(unittest.TestCase):
def test(self):
with self.assertRaises(KeyError, msg=WRONG_MESSAGE):
fn()
unittest.main()
В выводе мы получим:
AssertionError: KeyError не поднимается: Неправильное сообщение
msg
используется, когда ошибка подтверждения не возникает.
Фактическое решение заключается в использовании assertRaisesRegex , если мы хотимпроверить сообщение об исключении.
например
import unittest
CORRECT_MESSAGE = 'Correct message'
WRONG_MESSAGE = 'Wrong message'
def fn():
raise KeyError(CORRECT_MESSAGE)
class Test(unittest.TestCase):
def test_will_pass(self):
# This will check if the error message is CORRECT_MESSAGE.
with self.assertRaisesRegex(KeyError, CORRECT_MESSAGE):
fn()
def test_will_fail(self):
# This will check if the error message is WRONG_MESSAGE.
with self.assertRaisesRegex(KeyError, WRONG_MESSAGE):
fn()
unittest.main()