2016-10-06 4 views
0

私は自分のプロジェクトのオートドキュメントをsphinxで生成しようとしています。しかし、私はインポートするすべてのモジュールを持たない環境でautagersの世代を実行します。それゆえ、私は輸入声明を模倣したいと思う。私はCモジュールのこのトリックを見つけhttp://read-the-docs.readthedocs.io/en/latest/faq.htmlサブセクションをPythonでモックする

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 

関与importステートメントで。

モジュールの特定のリストのためにすべてのインポートを取得する方法を知りたい人はいらっしゃいますか?

答えて

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'> 
関連する問題