gpt4 book ai didi

python - 使用 Sphinx 扩展自动生成 doctest 输出

转载 作者:行者123 更新时间:2023-12-03 17:34:17 25 4
gpt4 key购买 nike

我想我遗漏了一些关于 doctest 的 sphinx 扩展的信息。

文档中的典型示例是:

.. doctest::

>>> print 1
1

有没有办法让 sphinx 自动生成输出(这里: 1 )?

据我了解,可以运行:
$ make doctest

它具有测试代码片段的效果,并将实际输出与预期输出进行比较。例如,如果你有
.. doctest::

>>> print 1
3

doctest 会警告你它得到了 1当它期待时 3 .

相反,我希望 sphinx 在我的文档字符串或我的 .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 module的“测试部分” :

The doctest module searches for pieces of text that look like interactive Python sessions, and then executes those sessions to verify that they work exactly as shown.



如果您编写输入和预期输出并让 Python 检查预期输出是否与实际输出匹配,则这些测试是有原因的。

如果您让 Python 产生预期的输出,那么……(用户/作者)将不再期望它,因此 doctests 永远不会失败,因此这些测试将毫无用处。

注:如果在函数内部没有逻辑(if/else、while 循环、附加等),则无需测试它们。并且测试不能重现测试逻辑,否则他们不再测试功能。

我找到了 this video关于测试驱动开发非常有趣,如果您想了解更多关于这个论点,也许您可​​能会感兴趣。

关于python - 使用 Sphinx 扩展自动生成 doctest 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49461153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com