rob*_*ntw 11 python mocking matplotlib
我正在尝试生成一个mattlotlib的模拟,以便我可以使用ReadTheDocs编译我的文档,但遇到了问题.
在我的代码中,我使用导入matplotlib from matplotlib.pyplot import *.
我使用以下代码进行模拟(如ReadTheDocs FAQ所示):
class Mock(object):
def __init__(self, *args, **kwargs):
pass
def __call__(self, *args, **kwargs):
return Mock()
@classmethod
def __getattr__(cls, name):
if name in ('__file__', '__path__'):
return '/dev/null'
elif name[0] == name[0].upper():
return type(name, (), {})
else:
return Mock()
MOCK_MODULES = ['numpy', 'scipy', 'matplotlib', 'matplotlib.pyplot']
for mod_name in MOCK_MODULES:
sys.modules[mod_name] = Mock()
Run Code Online (Sandbox Code Playgroud)
但是,在运行时from matplotlib.pyplot import *我得到一个错误说TypeError: 'type' object does not support indexing.
有没有办法让我可以改变我的Mock,以便它允许我使用from x import *样式导入matplotlib ?我不需要任何特定的功能可用,我只需要它可以导入,以便ReadTheDocs可以正确导入代码.
在通过导入的情况下,*您需要__all__在模块中定义列表.您的类也一样:只需将__all__属性添加到类中,它应该可以正常工作:
class Mock(object):
__all__ = []
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |