Тестирование модуля 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