Python 테스트를 위한 요청 및 응답 모의
Python 테스트에서는 실행 흐름을 제어하기 위해 모듈과 해당 기능을 모의해야 합니다. 특정 시나리오를 확인합니다. 그 중에서 요청 모듈 모의는 일반적으로 HTTP 요청에 의존하는 함수나 메서드를 테스트하는 데 사용됩니다.
다음 코드가 포함된 views.py 파일을 고려하세요.
def myview(request):
res1 = requests.get('aurl')
res2 = request.get('burl')
res3 = request.get('curl')
이 동작을 모의하려면 Python 모의 패키지를 사용할 수 있습니다. 단계별로 달성할 수 있는 방법은 다음과 같습니다.
1단계: 모의 동작 정의
요청 모듈을 모의하려면 요청을 대체할 함수를 정의하세요.get (). 이 함수에서는 각 URL에 대해 원하는 응답을 지정할 수 있습니다.
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)
2단계: 요청 모듈 패치
테스트 사례에서 mock.patch() 데코레이터를 사용하여 실제 요청을 교체합니다. 모의 함수가 포함된 모듈입니다.
@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
...
3단계: 어설션 확인
테스트 함수 내에서 어설션을 사용하여 예상 응답이 반환되는지 확인할 수 있습니다.
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')
이 단계를 수행하면 HTTP 요청을 효과적으로 모의하고 Python 테스트 시나리오에서 응답을 제어할 수 있습니다. 이를 통해 외부 종속성이 결과를 방해하지 않도록 하면서 특정 기능을 격리하고 테스트할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3