assertionerror возвращает пустую строку в python - PullRequest
4 голосов
/ 15 февраля 2011

Я делаю это:

try: self.failUnless(sel.is_text_present("F!")) #sel.is_text_present("F!") is false
except AssertionError, e: 
    print("x"+e+"y")
    sys.exit()

ничего не печатает, кроме ху. нет имени класса или чего-либо еще. что обычно содержит ошибка в AssertionError?

edit: очевидно, пользователь предоставляет свое собственное сообщение. селен породил многие из них:

except AssertionError, e: self.verificationErrors.append(str(e))

вообще не отправляя сообщение, поэтому оно добавляет кучу пустых строк в VerificationErrors.

Ответы [ 3 ]

4 голосов
/ 15 февраля 2011

Не отлавливайте ошибки из утверждений. Все утверждения в модуле unittest принимают конечный параметр msg, который является сообщением, которое будет выдано в случае сбоя подтверждения. Поместите вашу отладку туда, если это необходимо.

4 голосов
/ 15 февраля 2011

Стандартный assert оператор ничего не помещает в AssertionError, важен обратный след.Существует вариант assert expr, msg, который устанавливает сообщение об ошибке, если вы используете unittest, то второй аргумент assertTrue (failUnless устарел) сделает это.

1 голос
/ 13 июля 2014

Звучит так, будто вы хотите использовать свои утверждения в качестве операторов отладки в случае сбоя. Это должно помочь ...

import traceback

try:
  assert 1 == 2
except AssertionError: 
  traceback.print_exc()

Это печатает:

Traceback (most recent call last):
  File "./foo.py", line 4, in <module>
    assert 1 == 2
...