Тестирование модуля Python: сделать вывод о неудачных утверждениях носа
Можно ли показать несоответствующие значения утверждений? Он показывает трассировку и что такое исключение, но было бы более практичным узнать, какие значения не удалось.
Пример:
assert result.file == file
AssertionError
Ответы
Ответ 1
assert result.file == file, "%s != %s" % (result.file, file,)
Вот почему в unittest.TestCase
были введены некрасивые методы self.assert<Foo>
вместо хороших и коротких утверждений: self.assert<Foo>
методы знают, как отображать сообщения об ошибках.
Кстати, я думал, что нос делает черную магию, поэтому в простых случаях
assert a == b
должно отображаться значимое сообщение об ошибке.
Ответ 2
Вы должны запустить nosetests -d, это отобразит значения объектов, которые не могут сравниться в assert.
Ответ 3
Другая возможность: определить свою собственную функцию, которая делает трюк:
def assert_eq(obt, exp):
assert obt==exp, "\n*Expected:\n%s\n*Obtained:\n%s" % (exp, obt)
Вы можете вызвать его вместо assert
:
assert_eq ( self.data['SQ'].code, "SQ" )
И это возвращает эту приятную ошибку:
![AssertionError]()