Doctest завершается ошибкой, когда имя тестируемого файла __main__.py
. Это ожидаемое поведение?
В результате у вас не может быть никаких документов в __main__.py
. Тогда можно ли обойти эту проблему, просто переместив все проверенные объекты из __main__.py
в другой модуль, импортированный в __main__.py
?
Для воспроизведения: создайте файл, содержимое которого просто
"""
>>> 1+2
3
"""
Назовите этот файл как-нибудь иначе, чем __main__.py
,
python -m doctest anything_but_main.py
, и doctest пройдет без проблем.
Назовите этот файл __main__.py
,
python -m doctest __main__.py
Теперь doctest с треском вылетает:
**********************************************************************
File "C:\Users\PERSON\AppData\Local\Continuum\anaconda3\envs\fle\lib\doctest.py", line 1812, in __main__.DebugRunner
Failed example:
runner.run(test)
Expected:
Traceback (most recent call last):
...
doctest.UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
Got:
Traceback (most recent call last):
File "C:\Users\PERSON\AppData\Local\Continuum\anaconda3\envs\fle\lib\doctest.py", line 1329, in __run
compileflags, 1), test.globs)
File "<doctest __main__.DebugRunner[15]>", line 1, in <module>
runner.run(test)
File "C:\Users\PERSON\AppData\Local\Continuum\anaconda3\envs\fle\lib\doctest.py", line 1836, in run
r = DocTestRunner.run(self, test, compileflags, out, False)
File "C:\Users\PERSON\AppData\Local\Continuum\anaconda3\envs\fle\lib\doctest.py", line 1475, in run
return self.__run(test, compileflags, out)
File "C:\Users\PERSON\AppData\Local\Continuum\anaconda3\envs\fle\lib\doctest.py", line 1381, in __run
exception)
File "C:\Users\PERSON\AppData\Local\Continuum\anaconda3\envs\fle\lib\doctest.py", line 1842, in report_unexpected_exception
raise UnexpectedException(test, example, exc_info)
UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
**********************************************************************
1 items had failures:
1 of 21 in __main__.DebugRunner
***Test Failed*** 1 failures.