2013-12-03 3 views
7

Итак, я пытаюсь сопоставить исключение с доктриной.Исключения для исключения Python

>>> api = Api("foo", "bar") # doctest: +IGNORE_EXCEPTION_DETAIL 
Traceback (most recent call last): 
... 
AuthError 

Вопрос заключается в том, что это работает с py2.7, но не с питоном 3. Формат исключений трассировки был изменен, так что теперь он включает полное имя модуля. То есть в python 3 у меня есть package.module.AuthError.

Есть ли способ подобрать оба? Похоже, IGNORE_EXCEPTION_DETAIL не имеет никакого эффекта.

ответ

8

Это был случайно сломан пластырем для соответствующего выпуска: IGNORE_EXCEPTION_DETAIL should ignore the module name

и непреднамеренное поведение, которое вы видите, это открытый вопрос здесь: doctest.IGNORE_EXCEPTION_DETAIL doesn't match when no detail exists

Так что это ошибка, по моему мнению. Которая довольно хорошая уверенность в том, что будет исправить, так как я написал doctest для начала ;-) Тем временем вы можете попробовать патч, прикрепленный к отчету об ошибке 2.

Последующий отчет: Вчера вечером я проверил исправление для этого, которое появится в следующих выпусках Pythons 2.7, 3.3 и 3.4. Спасибо за подталкивание :-)

+0

Не является ли обязательным в префиксе 'doctest:'? Или они просто лишние? По крайней мере, они включены во все примеры здесь: http://docs.python.org/3.2/library/doctest.html#doctest.IGNORE_EXCEPTION_DETAIL –

+0

@ RobertJørgensgaardEngdahl, да, 'doctest:' требуется. Я пропустил это, потому что это не был реальный вопрос Николая - поведение, которое он описал, получает, даже если директива написана правильно ;-) –

Смежные вопросы