2016-10-06 2 views
0

스핑크스를 통해 프로젝트의 자동 문서화를 생성하려고합니다. 그러나 필자는 가져 오는 모든 모듈이없는 환경에서 자동 인증 모듈을 생성합니다. 따라서 나는 수입 진술을 조롱하고 싶다. 나는 C 모듈이 트릭을 발견 http://read-the-docs.readthedocs.io/en/latest/faq.html파이썬에서 조롱 서브 모듈

:

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'>