2016-10-06 92 views
0

我想通過獅身人面像生成我的項目的autodocumentation。但是,我將在一個沒有導入所有模塊的環境中運行autodocs。因此,我想嘲笑進口報表。蟒蛇中的嘲諷子模塊

http://read-the-docs.readthedocs.io/en/latest/faq.html我發現這招對C模塊:

import sys 
from unittest.mock import MagicMock 

class Mock(MagicMock): 
    @classmethod 
    def __getattr__(cls, name): 
     return Mock() 

MOCK_MODULES = ['pygtk', 'gtk', 'gobject', 'argparse', 'numpy', 'pandas'] 
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES) 

然而嘲諷GETATTR沒有解決的情況下這樣的:[。]

from foo.bar import blah 

也就是說,當有一個點介入在導入聲明中。

任何人有任何想法如何讓我的所有進口嘲笑一個特定的模塊列表?

回答

1

進口

from foo.bar import blah 

將尋找sys.modules['foo.bar']。只需插入:

>>> from foo.bar import blah 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ModuleNotFoundError: No module named 'foo' 
>>> import sys 
>>> from unittest import mock 
>>> sys.modules['foo.bar'] = mock.Mock() 
>>> from foo.bar import blah 
>>> blah 
<Mock name='mock.blah' id='4362289896'>