Unittest y Pytest: Garantizando la Calidad del Código
Escribir código es solo la mitad del trabajo; la otra mitad es asegurar que funcione correctamente. Las pruebas automatizadas te permiten verificar que tu lógica es correcta y que los nuevos cambios no rompen funcionalidades que ya existían.
1. El Módulo unittest
Es el marco de pruebas que viene integrado en la biblioteca estándar de Python. Sigue una filosofía orientada a objetos inspirada en JUnit de Java.
- Estructura: Creas una clase que hereda de
unittest.TestCase. - Aserciones: Utilizas métodos como
assertEqual,assertTrueoassertRaisespara validar los resultados. - Ciclo de vida: Permite configurar un estado inicial antes de cada prueba usando el método
setUp().
2. Pytest: La Alternativa Moderna
Aunque unittest es potente, Pytest es la herramienta favorita de la comunidad hoy en día por su simplicidad y potencia.
Ventajas de Pytest:
- Menos código: No necesitas clases; solo funciones que empiecen con el nombre
test_. - Aserciones simples: Usas el comando estándar de Python
asserten lugar de métodos especiales. - Fixtures: Un sistema elegante para gestionar datos de prueba y recursos.
¿Cómo se ve una prueba?
Imagina que tienes una función sumar(a, b). Una prueba automatizada simplemente preguntaría: "¿Es cierto que sumar(2, 3) es igual a 5?". Si la respuesta es sí, la prueba pasa; si no, el sistema te avisa exactamente dónde falló la lógica.
Reto: Tu Primera Prueba Unitaria
Vamos a escribir una prueba básica utilizando la lógica de unittest para validar una función matemática.
Instrucciones:
- Importa el módulo
unittest. - Crea una clase llamada
TestMatematicasque herede deunittest.TestCase. - Dentro de la clase, crea un método llamado
test_suma. - Dentro del método, usa
self.assertEqual(2 + 2, 4)para validar el cálculo.
# Escribe tu prueba automatizada: