Estructura de Proyectos de Testing con Unit Test en Python

Clase 3 de 20Curso de Unit Testing en Python

Resumen

La creación de funciones y pruebas para el código que se va a producción es clave para validar resultados correctamente. En Python, el uso de Unit Testing simplifica este proceso, permitiendo automatizar pruebas y hacerlas más legibles y eficientes, además de integrarse fácilmente con sistemas de Continuous Integration.

¿Cómo mejorar la legibilidad de las pruebas con Unit Testing?

Python incluye Unit Testing de forma nativa, proporcionando clases reutilizables para ejecutar pruebas de manera automática o manual. Esta herramienta no solo permite mejorar la legibilidad, sino también identificar y solucionar errores rápidamente, sin necesidad de depender de print para verificar si las pruebas se están ejecutando.

¿Cómo estructurar un proyecto de testing en Python?

  1. Separación de código y pruebas: Coloca el código fuente en una carpeta src y las pruebas en una carpeta test.
  2. Entorno virtual: Crea un entorno virtual para aislar dependencias del proyecto. Esto se hace con python -m venv, lo que genera una carpeta con binarios y librerías solo para el proyecto.
  3. Uso de gitignore: Añade un archivo .gitignore para evitar que el entorno virtual y otros archivos no deseados se suban al repositorio.

¿Cómo escribir y ejecutar pruebas con Unit Test?

Para escribir pruebas, sigue estas buenas prácticas:

  • Crea un archivo de pruebas, como test_calculator.py, y empieza importando Unit Test.
  • Define clases que hereden de unittest.TestCase.
  • Escribe métodos de prueba que validen funciones específicas usando assertEqual para verificar resultados.

Ejemplo básico de prueba:

import unittest
from src.calculator import add, subtract

class TestCalculator(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)

    def test_subtract(self):
        self.assertEqual(subtract(10, 5), 5)

Ejecuta las pruebas con python -m unittest discover para que Unit Testing encuentre y ejecute las pruebas automáticamente.

¿Qué hacer cuando una prueba falla?

Si una prueba falla, Unittest lo indica con una “F”, mostrando el error detallado, lo que facilita la depuración. Puedes forzar un fallo, por ejemplo, esperando que la suma de 2 + 3 sea 6 en lugar de 5, para ver cómo se comporta.