"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo simular solicitudes y respuestas HTTP en escenarios de prueba de Python?

¿Cómo simular solicitudes y respuestas HTTP en escenarios de prueba de Python?

Publicado el 2024-11-02
Navegar:262

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

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.

Declaración de liberación Este artículo se reimprime en: 1729424478 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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