파이썬에서 모의 ​​객체 업데이트

Aug 20 2020

다음과 같이 만든 모의 개체가 있습니다.

    with patch('requests.get') as request:
      self.request = request
      self.request.session = MockSession()
      self.request.cookies = {}

다른 기능을 통해 어떻게 업데이트 할 수 있습니까?

답변

2 MrBeanBremen Aug 19 2020 at 23:16

패치 된 개체를 저장하려면 수동으로 패치를 시작하고 중지해야합니다. 컨텍스트 관리자 (예 with patch:)를 사용하는 경우 범위를 종료 할 때 패치가 되돌려집니다.
수행 할 수있는 작업은 다음과 같습니다.

class TestSomething(unittest.TestCase):
    def setUp(self):
      self.patcher = patch('requests.get')  # returns the patcher object
      self.request = self.patcher.start()  # returns the patched object
      self.request.session = MockSession()
      self.request.cookies = {}

    def tearDown(self):
        sef.patcher.stop()

    def test_03_set_nonce(self):
        self.web_session.set_nonce(self.request)
        self.assertTrue(len(self.request.cookies) > 0, 'set_nonce failed.')

실제 테스트는 확인하지 않았습니다. 이는 애플리케이션 로직에 따라 다릅니다.

테스트에서 직접 패치를 수행 할 수도 있습니다.

    @patch('requests.get')
    def test_03_set_nonce(self, request):
        request.session = MockSession()
        request.cookies = {}
        self.web_session.set_nonce(request)
        self.assertTrue(len(request.cookies) > 0, 'set_nonce failed.')