使用模拟对象的默认参数

Default arguments using mocked objects

我正在使用 Sphinx v1.8.5 为 Python 2 代码构建文档,这些代码具有我使用 autodoc_mock_imports 模拟的外部依赖项。当我尝试使用模拟对象 (RAMP) 作为默认参数时收到错误消息:

def foo(name, amp=RAMP):

错误说:

NameError: name 'RAMP' is not defined

如果我不使用 RAMP 作为默认参数,错误就会消失。我做错了什么?

好的,感谢@bad_coder 的评论,我意识到障碍源于模块的导入方式。我需要使用 module_defining_RAMP.RAMP 来解析范围,而不是直接访问 RAMP.

当然,然后我在我的文档输出中得到了模拟对象的丑陋值:

foo(name, amp=<sphinx.ext.autodoc.importer._MockObject object>)

但是我在搜索自己的时候已经看到了这个问题的解决方案。我需要简单地在文档字符串中声明函数签名:

def foo(name, amp=RAMP):
"""
foo(name, amp=module_defining_RAMP.RAMP)
"""