там какой-либо путь к doctest локально определенным функциям? Как пример я хотел бы
def foo():
""" >>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
НЕ пройти тест. Но тем не менее я не хотел бы делать foo2 глобальный для всего модуля...
У вас просто проблема с пробелами - если вы исправите их, например, так:
def foo():
"""
>>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
if __name__ == '__main__':
import doctest
doctest.testmod()
тест пройдет нормально.
Спасибо. Я уже опасался, что кода вне строки документации не будет. Тем не менее я подумал, что может быть уловка, чтобы импортировать локальные переменные функции и, таким образом, получить доступ к вложенным функциям. Во всяком случае, решение, использующее подход Алекса, будет читать
def foo(debug=False):
"""
>>> foo()
testfoo
>>> foo(debug=True)
"""
def foo2():
"""
>>> 1/0"""
print 'testfoo'
if debug :
import doctest
for f in [foo2]: doctest.run_docstring_examples(f,locals())
foo2()
Теперь единственный вопрос - как автоматизировать этот подход, чтобы получилось что-то вроде
for f in locals().values(): doctest.run_docstring_examples(f,locals())
, но без импортированных и встроенных функций и переменных.