2014-12-18 2 views
0

Я закодировал некоторые тестовые примеры в моих кодовых комментариях и поставил их под travis-ci для работы с Python v2.6, v2.7 и Пипы. Только v2.7 удалось.Doctest преуспевает в Python v2.7, но не с Python 2.6 из-за несогласованного сообщения об ошибке

Моего doctest выглядит следующим образом ::

>>> a = ['a', 'b'] 
>>> a.index('i') 
Traceback (most recent call last): 
... 
ValueError: 'i' is not in list 

Python v2.6 и PyPy и жаловался, что возвращение ошибки было:

ValueError: list.index(x): x not in list 

Есть ли лучший способ проверить это, чем просто удаление этих тестовых случаев?

Благодаря

chfw

ответ

1

Вы пробовали с помощью ELLIPSIS вроде этого:

>>> a = ['a', 'b'] 
>>> a.index('i') # doctest:+ELLIPSIS 
Traceback (most recent call last): 
... 
ValueError: ... 
+0

Я забыл сначала добавить «# doctest: + ELLIPSIS». После добавления его после моей строки кода оба python v2.6 и pypy прошли мои тесты во второй попытке. thanks @ zero323 – chfw

0

Избегайте использования doctests, как они на самом деле не является переносимым. Подумайте об использовании испытательной основы, такой как unittest (встроенный), nosetests или py.test. Утверждения в ваших тестах можно сделать переносимыми, поскольку они могут быть написаны в общем виде.

Вы можете выполнить определенные тесты для определенных версий Python, чтобы вы тестировали содержимое сообщений об ошибках (если это необходимо) в этих версиях Python. Или, иначе говоря, вы можете разрешить пропустить тесты для большинства версий Python, кроме одного.

+0

Я согласен с вами в том, что тесты лучше писать с использованием этих тестовых фреймворков. Я просто хотел добавить, что тестовые примеры doctest будут проверять коды сиротских примеров в файлах docstring и rst после изменения кода. Таким образом, эти тестовые примеры напоминают мне об обновлении недействительного кода примера. – chfw

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