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)