Sphinx doctest vs autodoc

时间:2014-12-01 15:11:57

标签: python python-sphinx

我似乎无法让Sphinx autodoc和doctest扩展很好地协同工作。

我有一个doctested Python项目,其中docstrings正常工作。也就是说,在我的模块和子模块上调用doctest.testmod()效果很好。

在项目的Sphinx文档中,我使用ext.autodoc扩展名和automodule指令自动将模块的文档导入每个模块的.rst文档。

我想开始使用ext.doctest Sphinx扩展来编写一些用户文档和教程,并自动检查它们是否正确。然而,问题是显然doctest扩展从automodule d文档解析文档字符串,尝试运行它们并失败(很多错误无法找到文档字符串中引用的类型,以及其他问题,如这一点)。

我真的不希望ext.doctest从Python代码运行doctests(它们已作为测试套件的一部分运行)。有没有办法告诉Sphinx 尝试运行出现在某些文件中的doctests?

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。将“testsetup”指令添加到我的模块的docstring为我解决了这个问题。虽然,不幸的是你必须这样做。

"""Foo module types and functions

.. testsetup:: *

   from foo import *
   from foo.bar import *
"""

http://sphinx-doc.org/ext/doctest.html#directive-testsetup

答案 1 :(得分:0)

如果您希望告诉Sphinx不要从autodoc / automodule运行doctests,请修改conf.py文件中的doctest_test_doctest_blocks参数

doctest_test_doctest_blocks = None

请注意,这也会禁用所有'普通'''第一个文件中的doctest块(即未明确标有.. doctest:指令的doctests)。