> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 요청 모듈 응답을 모의하는 방법

Python에서 요청 모듈 응답을 모의하는 방법

Susan Sarandon
풀어 주다: 2024-10-20 19:47:30
원래의
864명이 탐색했습니다.

How to Mock Requests Module Responses in Python

응답 제어를 위한 요청 모의

Python에서 모의 ​​패키지는 외부 모듈이나 클래스를 모의하는 강력한 방법을 제공하여 사용자가 조작할 수 있도록 합니다. 행동을 확인하고 상호작용을 검증합니다. HTTP 요청의 맥락에서 요청 모듈 모의는 외부 서비스에 의존하는 코드를 테스트하는 데 특히 유용할 수 있습니다.

1단계: 요청 모듈 모의

요청 모듈을 모의하려면 원하는 응답을 반환하는 사용자 정의 함수로 get() 함수를 패치해야 합니다. 다음과 같이 모의 메소드를 정의할 수 있습니다.

<code class="python">def mocked_requests_get(url, **kwargs):
  if url == "aurl":
    return MockResponse("a response")
  elif url == "burl":
    return MockResponse("b response")
  else:
    raise Exception("URL not mocked")</code>
로그인 후 복사

이 메소드는 유효한 URL을 예상하고 사전 정의된 콘텐츠가 포함된 가상 응답을 나타내는 MockResponse 객체를 반환합니다.

2단계: 원본 요청 모듈 패치

모의 메소드를 정의한 후에는 @mock.patch 데코레이터를 사용하여 원본 요청.get()을 패치할 수 있습니다. 이는 테스트 중인 코드에서 요청한 동작으로 모든 요청을 대체합니다.

<code class="python">@mock.patch("requests.get", side_effect=mocked_requests_get)
def test_myview(self, mock_get):
  # Your test goes here</code>
로그인 후 복사

3단계: 응답 보기 및 확인 호출

이제 평소처럼 함수를 호출하고 예상한 응답을 얻었는지 확인할 수 있습니다. 모의 객체를 검사하여 get() 함수가 특정 인수로 호출되어 원하는 값을 반환했는지 확인할 수 있습니다.

예제 코드:

<code class="python">import requests
from unittest import mock

class MyViewTest(unittest.TestCase):
    # ...
    def test_myview(self, mock_get):
        self.assertEqual(res1.text, "a response")
        self.assertEqual(res2.text, "b response")
        self.assertEqual(res3.text, "c response")

        # Verify mock calls
        mock_get.assert_called_with('aurl')
        mock_get.assert_called_with('burl')
        mock_get.assert_called_with('curl')</code>
로그인 후 복사

기억하세요 응답의 텍스트 콘텐츠와 모의 메서드에 전달된 호출 횟수 및 인수를 모두 확인합니다. 이를 통해 예상되는 상호 작용이 발생하고 원하는 동작이 달성되었는지 확인할 수 있습니다.

위 내용은 Python에서 요청 모듈 응답을 모의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿