Contenido del curso
Conceptos Básicos de Unittest
- 4

Pruebas Unitarias con Python: Métodos Setup y Teardown
05:22 min - 5

setUp en Python para eliminar pruebas duplicadas
09:39 min - 6

Pruebas de Registro de Transacciones en Cuentas Bancarias
12:53 min - 7

Métodos de Assert en UnitTest para Pruebas Efectivas
13:38 min - 8

Decoradores de Unit Test para Saltar Pruebas y Detectar Fallos
09:15 min
Organización y Gestión de Pruebas
Técnicas Avanzadas en Pruebas Unitarias
Exploración de Herramientas y Métodos Complementarios
Mejora y Automatización de Pruebas
Suites y runners de unittest en Python
Resumen
Ejecutar pruebas desde la terminal funciona bien mientras desarrollas, pero cuando entras a un entorno de producción o de continuous integration necesitas más control. Con las test suites de Python y unittest puedes agrupar pruebas, ejecutarlas de forma selectiva y dejar de depender del descubrimiento automático que corre todo de una vez.
¿Qué es una suite de pruebas en unittest y para qué sirve?
Una suite es simplemente un grupo de pruebas. En proyectos pequeños sueles tener una sola y al ejecutarla corren todos los tests. Pero su verdadero valor aparece cuando modularizas: imagina correr únicamente las pruebas de la calculadora o solo las del banco, sin tocar el resto.
El comando que veníamos usando, python -m unittest discover, crea una suite automáticamente recorriendo una carpeta y buscando archivos que cumplan un patrón. Cómodo, sí, pero poco selectivo [01:05].
¿Qué hace unittest discover? Recorre una carpeta, encuentra los archivos que empiezan con
test_y arma una suite con todas las pruebas que encuentre, ejecutándolas de corrido.
¿Cómo creo una suite manualmente paso a paso?
Para entender qué hace discover por debajo, conviene crear una suite a mano. El flujo es así:
- Crea un archivo, por ejemplo
tests_suites.py, e importaunittest[02:10]. - Define una función como
bank_account_suite()que retorne la suite. - Instancia la clase con
suite = unittest.TestSuite(). - Agrega pruebas con
suite.addTest(BankAccountTests('test_deposit'))pasándole el nombre del método a ejecutar. - Repite
addTestpor cada prueba que quieras incluir, comotest_withdraw.
Una suite sola no ejecuta nada. Necesita un runner, que es quien recorre las pruebas una por una y genera el output que ves en la terminal.
¿Qué es un test runner y cómo lo configuro?
Un runner toma la suite y ejecuta cada prueba. unittest trae varios; el más común es TextTestRunner, que imprime resultados en texto plano.
Para usarlo dentro de tu archivo, instancia y ejecuta:
python if name == 'main': runner = unittest.TextTestRunner() runner.run(bank_account_suite())
Al correrlo por primera vez aparecen errores típicos que vale la pena resolver con calma [04:30]:
- Module is not a package: la carpeta
testnecesita un archivo__init__.pypara ser tratada como paquete. - No module named src: cuando ejecutas desde otra ubicación, Python no encuentra tu código fuente. La solución es agregar
__init__.pyensrcy exportar la variablePYTHONPATH=.antes del comando. - Imports redundantes: si ya estás dentro de la carpeta
test, importa la clase directamente sin el prefijo del paquete.
Después del ajuste, el runner ejecuta exactamente las dos pruebas que registraste con addTest, ni una más [05:50].
¿Para qué sirve PYTHONPATH al correr tests? Le indica a Python desde qué directorio buscar tus módulos. Usar
PYTHONPATH=.significa: busca desde la carpeta donde estoy parado ahora.
¿Cómo ejecuto una prueba específica desde la terminal?
No siempre necesitas crear una suite. unittest acepta rutas directas a una prueba puntual. La sintaxis es:
bash python -m unittest tests.test_calculator.CalculatorTest.test_sum
Si quitas el último segmento, corres todas las pruebas de la clase. Si quitas dos, corres todo el archivo. Es un truco rápido cuando estás depurando un caso aislado y no quieres esperar a que se ejecute la suite completa.
¿Cómo ejecuto pruebas con un clic desde Visual Studio Code?
Visual Studio Code trae su propio runner integrado. Al activarlo te pide dos cosas:
- El framework que usas: unittest o PyTest.
- La carpeta donde viven las pruebas.
- El patrón de nombres, en este caso
test_*.py.
Un detalle importante: el archivo donde definiste tu suite manual también empieza con test_, lo que confunde al descubridor de VS Code. Renómbralo a algo como suites_runner.py para que el patrón no lo capture [08:15].
Una vez configurado, aparece la lista completa de pruebas en el panel lateral. Puedes:
- Ejecutar una prueba individual con un clic.
- Ver un check mark verde si pasa.
- Identificar pruebas marcadas con
skipmediante un ícono distinto. - Abrir el botón Show Output para leer errores cuando las pruebas no se descubren.
Esto convierte el ciclo de feedback en algo mucho más ágil que estar escribiendo comandos largos cada vez que cambias una línea.
¿Cuándo conviene usar suites manuales y cuándo autodiscover?
La respuesta corta: depende del momento. Mientras desarrollas, autodiscover y el runner de VS Code te dan velocidad. En continuous integration o cuando quieres agrupar pruebas por categoría, área del negocio o prioridad, las suites manuales te dan control fino.
Puedes crear una suite para smoke tests, otra para pruebas lentas de integración y otra para regresiones. Así decides qué corre en cada pipeline sin ejecutar todo el universo de pruebas.
Ahora te toca a ti: crea varias suites, agrúpalas por categoría o por orden cronológico, ejecútalas y comparte en los comentarios cómo organizaste tus pruebas.