0
모의 사용이 가능한 것은 단 하나뿐입니다.딥 모크 (deep mock with method replacement)
#tested.py
from somemodule import somelogger
class MyClass(object):
def __init__(self):
self.logger = somelogger()
def do_smth(self):
self.logger.log(message)
중요세부 : 모듈 somemodule
그렇게 @patch 같은 일반적인 솔루션은 스위트하지 않는, 존재하지 않습니다.
#tests.py
from tested import MyClass
def test_logging():
obj = MyClass()
obj.do_smth('some_message')
콘솔에서 :
내가 그것을 somemodule
somelogger's
방법 log
을 조롱 할 필요는 간단한 인쇄를 수행
some_message
이 예제를 사용해 보셨습니까? 파이썬의 어떤 버전입니까? – sann05
이것은 파이썬 3.6 용입니다. 더 복잡한 시스템에서 비슷한 조롱을했는데 모든 것이 잘 작동했습니다. 2.7.x를 사용한다면 먼저 mock을 설치해야하며 unittest.mock 대신 mock을 가져와야합니다. – suripoori
죄송합니다. 하나의 중요한 세부 사항을 놓치 셨습니다 : 모듈 somemodule **은 ** ** ** ** ** ** exist **가 아닙니다 **. 그래서 우리가 가져 오기를 시도 할 때, 우리는 항상 ImportError를 얻습니다 : 모듈은 ** somemodule ** – sann05