有没有一种方法可以告诉Sphinx不运行模块而不禁用autodoc?

3
有没有办法告诉Sphinx不要运行setup_test而不禁用autdoc?这是我的Python代码:
def setup_test():
   ......get some stuff done here....
   return path, test

path, test = setup_test()

@pytest.mark.parametrize('asd', path, ids=test)
def test_dsf(asd):
   runpath = os.path.dirname(asd)
   assert runpath
1个回答

3
import sys
if 'sphinx' not in sys.modules:
    path, test = setup_test()

然后保护使用 pathtest 的测试

if 'sphinx' not in sys.modules:
    @pytest.mark.parametrize('asd', path, ids=test)
    def test_dsf(asd):
       runpath = os.path.dirname(asd)
       assert runpath

或者分配虚假值,以便Sphinx导入模块。
if 'sphinx' in sys.modules:
    path, test = '/', 'test'
else:
    path, test = setup_test()

感谢您尝试回答我的问题。我不确定这是否解决了我的问题,因为我无法运行“make html” - 当我运行“make html”时,在我的代码片段的第8行中出现错误:“NameError:name'path'未定义”。 - nss
再次感谢,这解决了我在运行'make html'时遇到的错误信息。然而,生成的.html文件未能打印test_dsf的源代码。 SPHINX不支持调用函数外部吗? .rst文件中是否有我遗漏的内容? 提出这个问题的目的是确保当我触发'make html'时,setup_test()不会在主机上运行。 - nss
Sphinx提取文档字符串;它不会“打印源代码”。你是什么意思? - mzjn
@nss Sphinx 不执行代码(不运行函数内部的代码),它会导入模块,提取文档字符串和类型注释。 - phd
@mzjn,我实际上是在说提取文档字符串时打印源代码。 - nss
@phd 谢谢,我已经成功地分配了虚假值并提取了文档字符串。 - nss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接