Почему doctests может вызвать ошибку NameError при запуске с командой Sphinx `make doctest`?

У меня есть простая функция с doctest, которая при запуске с make doctest Sphinx выдает следующую ошибку:

File "scheemey.rst", line ?, in default
Failed example:
    verify_balanced('asdf (foo [bar] [[baz], {}, ()]')
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest default[0]>", line 1, in <module>
        verify_balanced('asdf (foo [bar] [[baz], {}, ()]')
    NameError: name 'verify_balanced' is not defined

Что может быть причиной этого?


person Andrey Fedorov    schedule 05.07.2014    source источник


Ответы (1)


Я могу воспроизвести ошибку в вопросе, если модуль с тестируемой функцией не импортирован должным образом.

Чтобы заставить его работать, вы можете использовать директиву testsetup:

.. testsetup:: 

   from yourmodule import verify_balanced

>>> verify_balanced('asdf (foo) [bar] [[baz], {}, ()]')
>>> verify_balanced('asdf (foo [bar] [[baz], {}, ()]')
5

Обратите внимание, что doctest игнорирует возвращаемые значения None (см. Doctests Python: тест на None).

person mzjn    schedule 06.07.2014