Estructura de Proyectos de Testing con Unit Test en Python
Clase 3 de 20 • Curso 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?
- Separación de código y pruebas: Coloca el código fuente en una carpeta
src
y las pruebas en una carpetatest
. - 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. - 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.