使用Sphinx扩展名自动生成doctest输出
问题内容:
我认为我缺少有关doctest的狮身人面像扩展的信息。
文档中的典型示例是:
.. doctest::
>>> print 1
1
没有办法让Sphinx1
自动生成输出(在这里:)吗?
据我了解,可以运行:
$ make doctest
它可以测试代码段,并将实际输出与预期输出进行比较。例如,如果您有
.. doctest::
>>> print 1
3
doctest会警告您1
它在预期的时间内得到的3
。
相反,我希望狮身人面像将真正的输出单独插入我的文档字符串或.rst文件中。例如,如果我们有类似的东西:
.. doctest::
>>> print 1
>>> print [2*x for x in range(3)]
我希望当我们make doctest
使用一个选项运行时,它将文档字符串更改为:
.. doctest::
>>> print 1
1
>>> print [2*x for x in range(3)]
[0,2,4]
我相信这是有可能的,并且会非常方便!
问题答案:
对于 您尝试做的事情,我必须强烈(但请客气) 提出建议 。
您要问的是针对doctest模块的“测试部分” :
doctest模块搜索看起来像交互式Python会话的文本片段,然后执行这些会话以验证它们是否按所示正常工作。
这些测试有一个原因,就是 您要 编写输入和期望的输出,然后让Python检查期望的输出是否与实际输出匹配。
如果您让Python产生预期的输出,那么..它将不再是 预期的 (用户/作者),因此doctest将永远不会失败,因此这些测试将毫无用处。
注意: 如果在函数内部没有逻辑(if / else,while循环,追加等),则无需测试它们。并且测试不得重现测试逻辑,否则它们将不再测试功能。
我发现这段有关测试驱动开发的视频非常有趣,如果您想了解更多有关此论点的信息,也许对您很感兴趣。