可以 运行 python 对 jupyter 单元函数进行 doctest 吗?
Possible to run python doctest on a jupyter cell function?
似乎有一个包可以启用此功能,但我在 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'
是否可以 运行 使用此包或其他方式从 jupyter 单元进行 doctest?
我也查看了 %doctest_mode,我看到它可以关闭和打开 Doctest 模式,但无法 运行 来自单元格的实际 doctest。
在 Jupyter notebook 上试试这个:
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)
我一直点击此页面,但想 运行 测试单个功能。在这种情况下, 处的答案会有所帮助。即:
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
您可以在笔记本中使用 nbqa 到 运行 doctests:
$ nbqa doctest my_notebook.ipynb
**********************************************************************
File "my_notebook.ipynb", cell_2:11, in my_notebook.add
Failed example:
add(2, 2)
Expected:
4
Got:
5
**********************************************************************
1 items had failures:
1 of 2 in my_notebook.hello
***Test Failed*** 1 failures.
似乎有一个包可以启用此功能,但我在 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'
是否可以 运行 使用此包或其他方式从 jupyter 单元进行 doctest?
我也查看了 %doctest_mode,我看到它可以关闭和打开 Doctest 模式,但无法 运行 来自单元格的实际 doctest。
在 Jupyter notebook 上试试这个:
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)
我一直点击此页面,但想 运行 测试单个功能。在这种情况下, 处的答案会有所帮助。即:
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
您可以在笔记本中使用 nbqa 到 运行 doctests:
$ nbqa doctest my_notebook.ipynb
**********************************************************************
File "my_notebook.ipynb", cell_2:11, in my_notebook.add
Failed example:
add(2, 2)
Expected:
4
Got:
5
**********************************************************************
1 items had failures:
1 of 2 in my_notebook.hello
***Test Failed*** 1 failures.