doctest не работает на __main__.py - PullRequest
1 голос
/ 06 ноября 2019

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.
...