Python 如何从Sphinx autodoc中排除pytest函数?
我的Python 如何从Sphinx autodoc中排除pytest函数?,python,pytest,python-sphinx,autodoc,Python,Pytest,Python Sphinx,Autodoc,我的软件包中有多个模块 package/ |--mod1.py |--mod2.py 每个模块都包含一些用于测试模块的功能和测试功能 我正在使用sphinx apidoc为包中的每个模块生成.rst文件。我的问题是,当我为我的包生成文档时,test函数也包含在文档中。我知道可以使用::exclude members:function跳过函数。但我正在寻找一种解决方案,它允许我通过使用类似于test.*的模式对所有模块进行测试 我的package.rst文件如下所示: package packa
软件包中有多个模块
package/
|--mod1.py
|--mod2.py
每个模块都包含一些用于测试模块的功能
和测试功能
我正在使用sphinx apidoc
为包中的每个模块生成.rst
文件。我的问题是,当我为我的包生成文档时,test
函数也包含在文档中。我知道可以使用::exclude members:function
跳过函数。但我正在寻找一种解决方案,它允许我通过使用类似于test.*
的模式对所有模块进行测试
我的package.rst
文件如下所示:
package package
===============
Submodules
----------
.. toctree::
package.mod1
package.mod2
Module contents
---------------
.. automodule:: package
:members:
:undoc-members:
:show-inheritance:
package.mod1 module
===================
.. automodule:: package.mod1
:members:
:undoc-members:
:show-inheritance:
我的mod1.rst
文件如下所示:
package package
===============
Submodules
----------
.. toctree::
package.mod1
package.mod2
Module contents
---------------
.. automodule:: package
:members:
:undoc-members:
:show-inheritance:
package.mod1 module
===================
.. automodule:: package.mod1
:members:
:undoc-members:
:show-inheritance:
提前感谢。虽然@mzjn的评论绝对是一个好的指针,但我仍为此挣扎了一段时间
解决方案是为事件编写一个处理程序,并将其连接到conf.py
文件中的autodoc skip member
事件
下面是后者的样子:
# conf.py
# Loads of configuration settings
# This is the expected signature of the handler for this event, cf doc
def autodoc_skip_member_handler(app, what, name, obj, skip, options):
# Basic approach; you might want a regex instead
return name.startswith("test_")
# Automatically called by sphinx at startup
def setup(app):
# Connect the autodoc-skip-member event from apidoc to the callback
app.connect('autodoc-skip-member', autodoc_skip_member_handler)
通常,您的测试将放在test
或tests
目录下,然后您可以排除整个目录。@L-Jones9是的,但此时将所有测试移到其他目录会太多工作。非常感谢,我以后会考虑的。您可以跳过名为“Test*”的函数,通过定义一个处理程序(CON.PY中的一个函数),当从<代码> AutoOC跳过成员< /C>事件中调用时,返回<代码>真< /代码>。请参阅。我为每个文件将我的autodoc\u skip\u member\u handler
方法设置为return True
,但我的设置仍然挂起。@NuclearPeon挂起,就像永远运行一样?这看起来没什么关系。。。也许你可以在autodoc\u skip\u member\u handler
函数中添加一个print(name)
,看看它是如何调用的?我打印了每个属性,我可以看到它的运行。有一个带有模块级命令的文件可以连接到数据库,因此每次到达该点时它都会挂起。我尝试忽略方法调用名、包含模块、包含模块的模块,我尝试立即返回True和False,这样它将跳过所有内容,但它仍然挂起。可能是狮身人面像中的一只虫子。这是我得到的线索,指引我找到了绞刑的源头。