2013-10-05 3 views
1

에 파이썬에 모듈을 추가 나는 스크립트의 시작에서이 작업을 수행 파이썬 스크립트가 있습니다런타임

def initialize(module_name): 
    return importlib.import_module(module_name) # import module from string 

내가 테스트를 작성 할을하는 모듈 이름과 같이 밖으로 '모의 객체'

def test(): 
    # assemble module at run time 
    module_obj = {'name': Object, 'another_name': AnotherObject} 

    # inject to the "import system" 
    inject_mock_module('mymodule', module_obj) 

    # assert that the import went correctly 
    assert my_module_mock == initialize('mymodule') 

어떻게하면됩니까? 먼저 구체적으로 module_obj을 생성하는 방법과 inject_mock_module을 어떻게 정의합니까? 이것은 2.7+ 및 3.3+에서 모두 작동해야합니다.

+1

파이썬 2 또는 3을 사용하고 있습니까? –

답변

2

을 사용하여 import_module() 기능을 조롱합니다. 파이썬 3.3 이후로이 모듈을 unittest.mock으로 가져올 수 있습니다 :

try: 
    # Python 3.3+ 
    from unittest.mock import patch 
except ImportError: 
    # External dependency 
    from mock import patch 

def test(): 
    module_obj = {'name': Object, 'another_name': AnotherObject} 

    with patch('importlib.import_module', module_obj.get): 
     assert initialize('name') is module_obj['name']