파이썬의 모의 테스트 방법론을 뒤죽박죽으로 다루고 있습니다.Python unittest mock ... 모듈 선언문을 모의 처리합니다.
this file에 조롱하고 싶습니다. 패키지 XBMC, xbmcaddon 및 xbmcgui가 정상적인 파이썬 환경에서 가져올 수 없기 때문에
나는 이런 식으로 그들을 조롱 관리했습니다 :
class XBMCTestCase(unittest.TestCase):
def setUp(self):
#Mock up any calls to modules that cannot be imported
self.xbmc = Mock()
self.xbmcgui = Mock()
self.xbmcaddon = Mock()
modules = {
'xbmc' : self.xbmc,
'xbmcgui': self.xbmcgui,
'xbmcaddon': self.xbmcaddon
}
self.module_patcher = patch.dict('sys.modules', modules) #@UndefinedVariable
self.module_patcher.start()
행동 here에서를 참조하십시오. 내가 setlocation.py을 가져올 때
그래서 나는 다음과 같은 오류가 발생합니다 :
File "/home/paulo/workspace/weather.metoffice/src/metoffice/utils/utilities.py", line 21, in <module>
CACHE_FOLDER = os.path.join(ADDON_DATA_PATH, 'cache')
File "/usr/lib/python2.7/posixpath.py", line 78, in join
path += b
TypeError: unsupported operand type(s) for +=: 'Mock' and 'str'
을 나는 'metoffice.utils를'(교체 아웃 조롱해도 설정에서 만든 패치 모듈 목록에 추가하여) 나는 그래서 문자열을 반환 __addon__.getSetting()
필요 setlocation.py
File "/home/paulo/workspace/weather.metoffice/src/metoffice/setlocation.py", line 32, in <module>
GEOIP_PROVIDER = int(__addon__.getSetting('GeoIPProvider'))
TypeError: int() argument must be a string or a number, not 'Mock'
에서 유사한 오류가 발생합니다.
아이디어가 있으십니까?
모든 시도가 실패했지만 모의 패키지의 기능을 완전히 이해하지 못했다고 생각합니다. 내가 mock 1.0.1
'__addon__ '은 어디에서 왔습니까? 객체를 조롱했다면 getSetting() 호출의 반환 값을 설정해야합니다. –