Я определил класс исключений SpamException
в модуле spam
. Теперь я хочу протестировать функцию spam_function
, которая вызывает это исключение. Поэтому я написал следующий докт.Как проверить исключения с помощью doctest в Python 2.x и 3.x?
>>> spam_function()
Traceback (most recent call last):
....
SpamException
Тест проходит успешно на Python 2.x, но на Python 3.x тест не удался. Следующий тест работает на Python 3.x.
>>> spam_function()
Traceback (most recent call last):
....
spam.SpamException
Значительная разница здесь - это включение имени модуля в имя исключения. Итак, как я могу написать доктрину, которая работает как на Python 2.x, так и на 3.x?
я не заметил каких-либо изменений при добавлении '# doctest: + IGNORE_EXCEPTION_DETAIL', т.е. он держит неудачу либо Версия Python. Можете ли вы добавить полный пример? –
'IGNORE_EXCEPTION_DETAIL' работает, как только класс исключения имеет метод' __str__', который возвращает непустую строку. Тогда и только тогда окончательная строка исключений имеет двоеточие, которое требуется для того, чтобы директива работала. –
Кажется, что IGNORE_EXCEPTION_DETAIL игнорирует также сообщение об исключении, которое устраняет значительную часть цели учения этих действий. Но тип исключения по-прежнему проверяется. ouf! – vaab