Piszę poniżej, w którym próbuję stworzyć przyzwoity komunikat o błędzie podczas porównywania dwóch wielowierszowych bloków tekstu Unicode. Metoda wnętrze, które ma porównania budzi twierdzenie, ale domyślny wyjaśnienie jest dla mnie bezużytecznyJak zmienić wiadomość w Python AssertionError?
muszę coś dodać do kodu takiego jak ten poniżej:
def assert_long_strings_equal(one, other):
lines_one = one.splitlines()
lines_other = other.splitlines()
for line1, line2 in zip(lines_one, lines_other):
try:
my_assert_equal(line1, line2)
except AssertionError, error:
# Add some information to the printed result of error??!
raise
nie mogę dowiedzieć się, jak zmienić wydrukowano komunikat o błędzie w asercji, którą łapię. Zawsze otrzymuję AssertionError: u'something' != 'something else'
, który pokazuje tylko pierwszą linię danych wyjściowych.
Jak mogę zmienić komunikat potwierdzenia, aby wydrukować to, co chcę?
Jeśli jest to istotne, używam nose
do uruchomienia testu.
Po to, by wyjaśnić, zdaję sobie sprawę, że złapanie błędu asercji jest dziwne. Tak się składa, że 'my_assert_equal' jest dość głęboki i nie chcę z tym mieszać. –
Dla podkreślenia, powinieneś mieć 'except', a nie' catch'. Chociaż jestem pewien, że to tylko literówka: p – katrielalex