Simulación de Side Effects con Mock en Pruebas Unitarias
Clase 12 de 20 • Curso de Unit Testing en Python
Resumen
Mock nos permite simular comportamientos variables, una herramienta útil cuando queremos probar cómo reacciona nuestro código ante diferentes escenarios sin modificar el entorno real. Uno de los usos más poderosos es el “side effect”, que nos ayuda a hacer que un método falle en un caso y funcione en otro. Esto es clave para manejar errores temporales, como en el caso de una API de pagos que rechaza una tarjeta incorrecta, pero acepta una correcta en un segundo intento.
¿Cómo se define un “side effect” en Mock?
El “side effect” en Mock nos permite modificar el comportamiento de un método en distintas llamadas. Se define como una lista de comportamientos, donde cada elemento de la lista corresponde al resultado de una llamada específica. Esto permite:
- Simular fallos de manera controlada, como lanzar excepciones específicas en las pruebas.
- Probar el código bajo diferentes condiciones sin interactuar con los servicios externos.
¿Cómo se maneja un error y una respuesta exitosa en pruebas unitarias?
En una prueba unitaria con Mock, podemos definir comportamientos variables. Por ejemplo, para simular una excepción, usamos la estructura side_effect
, donde la primera llamada lanza un error y la segunda retorna una respuesta exitosa. Esto permite cubrir ambos casos sin necesidad de realizar un request real.
- Definimos el primer comportamiento con una excepción.
- Luego, para el segundo comportamiento, usamos
Mock
para devolver un objeto con los valores que esperamos, simulando una respuesta exitosa.
¿Qué métodos auxiliares facilita Mock?
Mock facilita métodos como raiseException
, que lanza una excepción específica, y mock
, que permite crear objetos personalizados. Estos objetos pueden tener parámetros configurables como status_code
y devolver datos específicos al llamar métodos como JSON
. Este tipo de pruebas es crucial para validar la resiliencia del software ante errores temporales.
¿Cómo integrar validaciones adicionales en las pruebas?
Para reforzar las pruebas, puedes agregar validaciones adicionales, como simular el envío de una IP inválida. En este caso, si la IP es incorrecta, se debe lanzar un error, mientras que si es válida, debe retornar los datos de geolocalización. Esto se implementa agregando más casos en la lista de side effects, cubriendo así todas las situaciones posibles.