【问题标题】:Sphinx doctest vs autodoc狮身人面像 doctest 与 autodoc
【发布时间】:2014-12-01 15:11:57
【问题描述】:

我似乎无法让 Sphinx autodoc 和 doctest 扩展很好地结合在一起。

我有一个经过文档测试的 Python 项目,其中的文档字符串运行良好。也就是说,在我的模块和子模块上调用doctest.testmod() 效果很好。

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

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

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

【问题讨论】:

    标签: python python-sphinx


    【解决方案1】:

    我遇到了类似的问题。将“testsetup”指令添加到我的模块的文档字符串中为我解决了这个问题。不过,很遗憾您必须这样做。

    """Foo module types and functions
    
    .. testsetup:: *
    
       from foo import *
       from foo.bar import *
    """
    

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

    【讨论】:

    • 也许您可以改用doctest_global_setup 配置?
    【解决方案2】:

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

    doctest_test_doctest_blocks = None
    

    请注意,这还将禁用您的 rst 文件中的任何“普通”doctest 块(即未明确用 .. doctest: 指令标记的 doctest)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多