可以在jupyter单元函数上运行python doctest吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以在jupyter单元函数上运行python doctest吗?相关的知识,希望对你有一定的参考价值。

似乎有一个包来启用此功能,但我在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笔记本上试试这个:

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

以上是关于可以在jupyter单元函数上运行python doctest吗?的主要内容,如果未能解决你的问题,请参考以下文章

Jupyter使用

Jupyter笔记本没有执行单元格?

jupyter快捷键

jupyter快捷键

jupyter记事本的安装和简单应用

Jupyter&numpy