가져온 모듈의 함수 @patch
을 이해하고 싶습니다.가져온 모듈의 함수를 조롱하는 Python
여기까지입니다.
응용 프로그램/mocking.py :
from app.my_module import get_user_name
def test_method():
return get_user_name()
if __name__ == "__main__":
print "Starting Program..."
test_method()
응용 프로그램/my_module/__ init__.py : mock-test.py
def get_user_name():
return "Unmocked User"
테스트/:
import unittest
from app.mocking import test_method
def mock_get_user():
return "Mocked This Silly"
@patch('app.my_module.get_user_name')
class MockingTestTestCase(unittest.TestCase):
def test_mock_stubs(self, mock_method):
mock_method.return_value = 'Mocked This Silly')
ret = test_method()
self.assertEqual(ret, 'Mocked This Silly')
if __name__ == '__main__':
unittest.main()
이것은 이 아니며이 예상대로 작동합니다. "패치 된"모듈은 단순히 잠금 해제 된 값 get_user_name
을 반환합니다. 테스트중인 네임 스페이스로 가져 오는 다른 패키지의 메소드를 조롱하려면 어떻게해야합니까?
질문은 "모범 사례 조롱"에 관한 것이지, 아니면 당신이하고있는 것이 합리적인지 여부에 관한 것입니까? 첫 번째 부분에 대해서는 python3.3 +에 포함 된 ['Mock'] (http://www.voidspace.org.uk/python/mock/)과 같은 조롱 라이브러리를 사용한다고 말하고 싶습니다. ['unittest .mock'] (http://docs.python.org/dev/library/unittest.mock). – Bakuriu
나는이 권리에 대해 갈 것인지 묻는다. 나는 모의를 보았으나이 특별한 문제를 해결할 방법이 없다. 위의 작업을 모의에서 다시 할 수있는 방법이 있습니까? – nsfyn55