2010-02-27 2 views
4

가져온 외부 객체를 사용하는 함수에 대한 단위 테스트를 구현하려고합니다.가져온 모듈을 Python으로 조롱

예를 들어 helpers.py이다 : 그래서

import os 
import pylons 

def some_func(arg): 
    ... 
    var1 = os.path.exist(...) 
    var2 = os.path.getmtime(...) 
    var3 = pylons.request.environ['HTTP_HOST'] 
    ... 

나는 그것을 위해 단위 테스트를 만드는거야 때 약간의 조롱 (내 경우에는 minimock) 및 pylons.request에 대한 참조 및 운영 체제를 대체 할 . 경로 :

import helpers 
def test_some_func(): 
    helpers.pylons.request = minimock.Mock("pylons.request") 
    helpers.pylons.request.environ = { 'HTTP_HOST': "localhost" } 
    helpers.os.path = minimock.Mock(....) 
    ... 
    some_func(...) 
    # assert 
    ... 

이것은 나에게 좋지 않습니다.

파이썬에서 가져온 함수/개체를 대체하는 더 좋은 방법이나 전략이 있습니까?

답변

1

글쎄, 당신은 위의 사용하는 것보다 이것에 대한 쉬운 패러다임이 minimock에 :

>>> from minimock import mock 
>>> import os.path 
>>> mock('os.path.isfile', returns=True) 

참조 http://pypi.python.org/pypi/MiniMock#creating-mocks

당신이 할되면 해당 os.path.isfile("blah") 않는 모든 모듈 True을 되 찾을 것입니다. 테스트중인 모듈의 네임 스페이스를 명시 적으로 재 할당 할 필요가 없습니다.

관련 문제