У меня есть довольно базовый доктрируемый файл:
class Foo():
"""
>>> 3+2
5
"""
if __name__ in ("__main__", "__console__"):
import doctest
doctest.testmod(verbose=True)
который работает, как ожидается, при запуске непосредственно через python.
Однако в iPython я получаю
1 items had no tests:
__main__
0 tests in 1 items.
0 passed and 0 failed.
Test passed.
Так как это часть проекта Django и ему потребуется доступ ко всем соответствующим переменным, и что настройки manage.py, я также могу запустить его с помощью модифицированной команды, которая использует код .InteractiveConsole, один из которых __name__
устанавливается в '__console__
'.
С приведенным выше кодом я получаю тот же результат, что и с iPython. Я попытался изменить последнюю строку:
this = __import__(__name__)
doctest.testmod(this, verbose=True)
и я получаю ImportError на __console__
, что имеет смысл, я думаю. Это не влияет ни на python, ни на ipython.
Итак, я хотел бы иметь возможность успешно запускать доктрины во всех трех этих методах, особенно в InteractiveConsole, так как я ожидаю, что скоро вам понадобится магия пони Django.
Просто для разъяснения, вот что я ожидаю:
Trying:
3+2
Expecting:
5
ok
1 items had no tests:
__main__
1 items passed all tests:
1 tests in __main__.Foo
1 tests in 2 items.
1 passed and 0 failed.
Test passed.