TDD를 배우려고 시도하면서 단위 테스트를 배우고 모의 파이썬을 사용하려고했습니다. 천천히 그것의 걸림 새를 얻는, 그러나 나가 이것을 정확하게하고있는 경우에 불확실한. 미리 경고 : 저는 파이썬 2.4를 사용하고 있습니다. 왜냐하면 벤더 API가 미리 컴파일 된 2.4 파이크 파일이기 때문에 mock 0.8.0과 unittest (unittest2가 아닌)를 사용하고 있습니다.unittest setup으로 파이썬에서 mock을 올바르게 사용하는 방법
'mymodule.py '
이제 내 테스트 케이스 파일'test_myclass.py '에서 ldap 개체를 조롱하고 싶습니다. ldap.initialize는 ldap.ldapobject.SimpleLDAPObject를 반환하므로, 내가 조롱해야 할 방법이라고 생각했습니다.
- 합니까 제대로 보이지 :
몇 가지 질문에 날 리드? :)import unittest from ldap import INVALID_CREDENTIALS from mock import patch, MagicMock from mymodule import MyClass class LDAPConnTests(unittest.TestCase): @patch('ldap.initialize') def setUp(self, mock_obj): self.ldapserver = MyClass('myserver','myuser','mypass') self.mocked_inst = mock_obj.return_value def testRaisesMyCustomException(self): self.mocked_inst.simple_bind_s = MagicMock() # set our side effect to the ldap exception to raise self.mocked_inst.simple_bind_s.side_effect = INVALID_CREDENTIALS self.assertRaises(mymodule.MyCustomException, self.ldapserver.connect) def testMyNextTestCase(self): # blah blah
- 테스트하는 클래스 내에서 인스턴스화 된 객체를 모의 해보기위한 적절한 방법입니까?
- setUp에서 @patch 데코레이터를 호출하는 것이 좋습니까? 아니면 이상한 부작용을 유발할 수 있습니까?
- 예외를 내 테스트 케이스 파일로 가져 오지 않고도 ldap.INVALID_CREDENTIALS 예외를 발생시키는 모의 사례가 있습니까?
- 대신 patch.object()를 사용해야하며, 그렇다면 어떻게해야합니까?
감사합니다.
1-3) 나에게 좋은 것 같은데 ... 4)'수입 ldap' 대신과'side_effect = ldap.INVALID_CREDENTIALS'을 설정? – Chris
당신은 언제나 똑같은 테스트를 할 수 있지만, 더 간단한 오브젝트를 직접 만들 수 있습니다 ... – shackra