2014-01-19 4 views
2

Итак, у меня есть некоторые методы, возвращающие некоторые довольно сложные объекты, и я бы хотел проверить этот вывод. Я строю единичный тест с использованием unittest, и я обнаружил, что вычисляемый объект и построенный объект не равны. Очень жаль.assertEqual не печатает неравные объекты

Что меня заставляет, так это то, что сообщение об ошибке не печатает два объекта, а только некоторые bland repr. Каждый объект определяет __str__ и __eq__, и я знаю, что __str__, что подтверждается размещением raise ValueError в функции __str__.

Что дает?

ответ

1

Многие места в Python используют repr() объекта, а не str(), так как repr() обычно указывает один точный экземпляр.

Если вы хотите увидеть фактическое str() вместо этого, многие методы assertWhatever позволяют персонализированное сообщение об ошибке:

assertEqual(my_obj1, my_obj2, '%s != %s' % (my_obj1, my_obj2)) 
Смежные вопросы