Python: может ли unittest отображать ожидаемые и фактические значения?

Если у меня есть утверждение в unittest.TestCase, как показано ниже:

self.assertTrue( person.age == 42, "age incorrect")

Когда он терпит неудачу, он дает сообщение "неправильное возраст". То, что я также хотел бы видеть, - это ожидаемые и фактические значения. Какой лучший способ сделать это? Может ли это сделать что-то unittest?

ИЗМЕНИТЬ Я хотел бы увидеть что-то вроде:

"возраст неправильный: ожидаемое значение 42 фактическое значение 39"

Ответ 1

Вы должны использовать обходной путь для этой проблемы, например:

self.assertEqual(person.age, 42, 'age incorrect: expected value {0} actual value {1}'.format(42, person.age))

Но я думаю, что не предоставление параметра "msg" - лучший вариант, так как он генерирует текст:

first != equal

Большинство (*) инструментов для запуска тестов также показывают, какая строка не удалась, поэтому вы должны понимать, какой тест не удалось и почему без использования дополнительного сообщения.

(*) читать "все".

Ответ 2

вы можете установить атрибут longMessage в True

expected_age = 42
actual_age = person.age # 39
self.longMessage = True
self.assertEqual(expected_age, actual_age, 'age incorrect')

вы получите что-то вроде:

AssertionError: 42 != 39 : age incorrect

ссылка: https://docs.python.org/2/library/unittest.html#unittest.TestCase.longMessage

Ответ 3

см. assertEqual

self.assertEqual(person.age, 42, 'age incorrect')

или с сообщением по умолчанию (чтобы ответить на комментарий):

self.assertEqual(person.age, 42)