24

我正在尝试使用 doctest 模块在 Python 中进行测试。目前我做

  1. 编写函数的测试。
  2. 实现功能代码。
  3. 如果测试通过,请编写更多测试和更多代码。
  4. 完成该功能后,继续执行下一个功能。

因此,在同一个模块中的 3 或 4 个(独立)函数和许多测试之后,我得到了 doctest 的巨大输出。这有点烦人。

有没有办法告诉 doctest “不要测试函数a()b()并且c()”,以便它只运行未标记的函数?

我只找到了doctest.SKIP标志,这不足以满足我的需要。我必须把这个标志放在很多行中。如果我想再次检查一个标记的函数,我将不得不手动检查代码并删除我在里面设置的任何标志。

4

2 回答 2

33

看起来你可以将函数传递给run_docstring_examples

def f(a, b, c):
    '''
    >>> f(1,2,3)
    42
    '''

if __name__ == '__main__':
    import doctest
#    doctest.testmod()
    doctest.run_docstring_examples(f, globals())

通过谷歌找到的例子

于 2012-04-10T00:12:23.687 回答
0

我整理了一个帮助脚本,以减轻痛苦。可以使用以下方式安装:

pip install doctestfn

然后它可以被称为:

doctestfn {module or filename} {function to test}
于 2021-09-30T15:01:49.870 回答