Solicitudes y respuestas simuladas para pruebas de Python
En las pruebas de Python, se hace necesario simular módulos y su funcionalidad para controlar el flujo de ejecución y verificar escenarios específicos. Entre estos, burlarse del módulo de solicitudes se usa comúnmente para probar funciones o métodos que dependen de solicitudes HTTP.
Considere un archivo views.py con el siguiente código:
def myview(request):
res1 = requests.get('aurl')
res2 = request.get('burl')
res3 = request.get('curl')
Para simular este comportamiento, puede emplear el paquete simulado de Python. Así es como puedes lograrlo paso a paso:
Paso 1: Definir el comportamiento simulado
Para simular el módulo de solicitudes, define una función que sustituirá las solicitudes.get (). En esta función, puede especificar la respuesta deseada para cada 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)
Paso 2: parchear el módulo de solicitudes
En su caso de prueba, use el decorador mock.patch() para reemplazar las solicitudes reales módulo con su función simulada.
@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
...
Paso 3: Verificar las afirmaciones
Dentro de su función de prueba, puede utilizar afirmaciones para verificar que se devuelvan las respuestas esperadas.
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')
Al seguir estos pasos, puede simular eficazmente las solicitudes HTTP y controlar las respuestas en sus escenarios de prueba de Python. Esto le permite aislar y probar funcionalidades específicas mientras garantiza que las dependencias externas no interfieran con sus resultados.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3