Возможно ли запустить python doctest на функции ячейки jupyter?
Кажется, есть пакет для включения этой функции, но мне не повезло с ним в python 3.5.2 или 2.7.12:
from ipython_doctester import test
@test
def my_fun():
'''
>>> 2 + 3
6
'''
pass
TypeError: data must be a dict, got: 'ipython_doctester'
можно ли запустить doctest из ячейки jupyter с помощью этого пакета или каким-либо другим способом?
Я также посмотрел %doctest_mode, и я вижу, что он выключает и включает режим Doctest, но не смог запустить фактический doctest из ячейки.
3 ответов
попробуйте это на ноутбуке Jupyter:
def my_fun():
'''
>>> 2 + 3
6
'''
pass
import doctest
doctest.testmod()
результат должен быть:
**********************************************************************
File "__main__", line 3, in __main__.my_fun
Failed example:
2 + 3
Expected:
6
Got:
5
**********************************************************************
1 items had failures:
1 of 1 in __main__.my_fun
***Test Failed*** 1 failures.
TestResults(failed=1, attempted=3)
(я использовал python 2.7.12)
Я продолжаю нажимать эту страницу, но хотел запустить тест для одной функции. В этом случае, ответ на https://stackoverflow.com/a/10081450/741316 помогает. А именно:
def my_fun():
'''
>>> 2 + 3
6
'''
pass
import doctest
doctest.run_docstring_examples(my_fun, globals())
я использовал ответ @pelson, чтобы написать этот декоратор
import doctest
import copy
import functools
def test(func):
globs = copy.copy(globals())
globs.update({func.__name__:func})
doctest.run_docstring_examples(func, globs, verbose=True, name=func.__name__)
return func
см. суть с doctest:https://gist.github.com/2torus/f78b7cef5770927a92e3ca652f38ff89