Python 테스트 시나리오에서 HTTP 요청 및 응답을 모의하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-20 19:44:02
원래의
278명이 탐색했습니다.

How to Mock HTTP Requests and Responses in Python Testing Scenarios?

Python 테스트를 위한 요청 및 응답 모의

Python 테스트에서는 실행 흐름을 제어하기 위해 모듈과 해당 기능을 모의하는 것이 필요합니다. 특정 시나리오를 확인합니다. 이 중에서 요청 모듈 모의는 일반적으로 HTTP 요청에 의존하는 함수나 메서드를 테스트하는 데 사용됩니다.

다음 코드가 포함된 views.py 파일을 고려하세요.

<code class="python">def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')</code>
로그인 후 복사

이를 모의하려면 동작을 수행하려면 Python 모의 패키지를 사용할 수 있습니다. 단계별로 달성할 수 있는 방법은 다음과 같습니다.

1단계: 모의 동작 정의

요청 모듈을 모의하려면 request.get을 대체할 함수를 정의하세요. (). 이 함수에서는 각 URL에 대해 원하는 응답을 지정할 수 있습니다.

<code class="python">def mocked_requests_get(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if args[0] == 'aurl':
        return MockResponse({'a': 'a'}, 200)
    elif args[0] == 'burl':
        return MockResponse({'b': 'b'}, 200)
    elif args[0] == 'curl':
        return MockResponse({'c': 'c'}, 200)

    return MockResponse(None, 404)</code>
로그인 후 복사

2단계: 요청 모듈 패치

테스트 사례에서 모의 ​​모듈을 사용하세요. .patch() 데코레이터를 사용하여 실제 요청 모듈을 모의 함수로 대체합니다.

<code class="python">@mock.patch('requests.get', side_effect=mocked_requests_get)
def test_myview(self, mock_get):
    # Call the function you want to test
    myview(None)
    # Assertions for expected responses
    ...</code>
로그인 후 복사

3단계: 어설션 확인

테스트 함수 내에서 다음을 사용할 수 있습니다. 예상 응답이 반환되는지 확인하는 어설션.

<code class="python">self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl')
self.assertEqual(mock_get.call_args_list[1][0][0], 'burl')
self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')</code>
로그인 후 복사

이러한 단계를 수행하면 HTTP 요청을 효과적으로 모의하고 Python 테스트 시나리오에서 응답을 제어할 수 있습니다. 이를 통해 외부 종속성이 결과를 방해하지 않도록 하면서 특정 기능을 격리하고 테스트할 수 있습니다.

위 내용은 Python 테스트 시나리오에서 HTTP 요청 및 응답을 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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