Saltar a contenido

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, assertTrue o assertRaises para 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:

  1. Menos código: No necesitas clases; solo funciones que empiecen con el nombre test_.
  2. Aserciones simples: Usas el comando estándar de Python assert en lugar de métodos especiales.
  3. 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:

  1. Importa el módulo unittest.
  2. Crea una clase llamada TestMatematicas que herede de unittest.TestCase.
  3. Dentro de la clase, crea un método llamado test_suma.
  4. Dentro del método, usa self.assertEqual(2 + 2, 4) para validar el cálculo.

# Escribe tu prueba automatizada: