Модульное тестирование Python: заставьте нос показать неудачные значения утверждений - PullRequest
14 голосов
/ 01 сентября 2010

возможно ли показать значения утверждений, которые потерпели неудачу? Он показывает трассировку и какое исключение было выброшено, но было бы более практичным узнать, какие значения не сработали.

Пример:

assert result.file == file
AssertionError

Ответы [ 3 ]

23 голосов
/ 17 мая 2012

Вы должны запустить тесты на нос - -d при этом отобразятся значения объектов, которые не проходят сравнение в assert.

6 голосов
/ 01 сентября 2010

assert result.file == file, "%s != %s" % (result.file, file,)

Вот почему уродливые self.assert<Foo> методы были введены в unittest.TestCase вместо хороших и коротких утверждений: self.assert<Foo> методы знают, как отображать сообщения об ошибках.

ByКстати, я думал, что нос совершает какую-то чёрную магию, поэтому в простых случаях

assert a == b

должно показывать осмысленное сообщение об ошибке.

1 голос
/ 07 сентября 2015

Еще одна возможность: определить свою собственную функцию, которая делает трюк:

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

...