Pruebas unitarias en Python con unittest y doctest

Conoce unittest y doctest en Python para pruebas unitarias, fixtures y mocking, con ejecución en CI/CD. En Q2BSTUDIO integramos testing para calidad y seguridad.

25 sept 2025 • 4 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

En Python existen varias herramientas para escribir, organizar, ejecutar y automatizar pruebas unitarias. En la biblioteca estandar se encuentran doctest y unittest, cada uno con ventajas complementarias.

doctest es un marco liviano que permite extraer pruebas de la documentacion y de las docstrings, ideal para validar ejemplos sencillos. unittest es un framework inspirado en JUnit que ofrece una solucion mas completa: test case, test suite, test fixture y test runner.

Definiciones breves: un test case es una unidad de prueba que verifica la salida para un conjunto de entradas; un test suite agrupa test cases y otras suites; un test fixture prepara y deja limpio el entorno antes y despues de las pruebas; un test runner ejecuta las pruebas y comunica los resultados al usuario.

Ejemplo conceptual: una funcion categorize_by_age(age) clasifica edades en Child, Adolescent, Adult, Golden age y ante valores fuera de rango devuelve una cadena indicando la edad invalida seguida del numero. Con unittest se crean metodos de prueba que llaman a categorize_by_age con distintos valores y verifican el resultado con assertEqual u otros metodos de asercion.

Para ejecutar pruebas con unittest se puede hacer el modulo de prueba ejecutable comprobando if __name__ == __main__ y llamando a unittest.main con el argumento verbosity para ajustar la verbosidad: 0 silencioso, 1 normal, 2 detallado. Agregar docstrings a los metodos de prueba mejora la descripcion en la salida cuando verbosity se establece en 2.

Unittest permite tambien saltar pruebas con decoradores como skip, skipIf y skipUnless, util cuando una prueba depende de la plataforma o de la version de Python.

subTest aporta granularidad cuando se prueban multiples valores dentro de un mismo metodo: cada iteracion se trata como un subtest independiente, de modo que un fallo no impide la ejecucion de los demas y el informe indica exactamente que entrada provoco el error.

Principales metodos de asercion: assertEqual, assertNotEqual, assertTrue, assertFalse; para identidad de objetos assertIs, assertIsNot, assertIsNone, assertIsNotNone; para colecciones assertSequenceEqual, assertListEqual, assertTupleEqual, assertDictEqual, assertSetEqual y assertMultiLineEqual para cadenas multilinea.

Para agrupar pruebas y ejecutarlas por separado se puede crear una TestSuite manual y pasarsela a TextTestRunner, de modo que por ejemplo las pruebas aritmeticas y las pruebas estadisticas puedan correr de forma independiente y controlada.

Fixtures: setUp se ejecuta antes de cada metodo de prueba y tearDown despues de cada metodo; setUpClass y tearDownClass se ejecutan una sola vez al inicio y al final de la clase y deben ser metodos de clase. Estos mecanismos permiten abrir y cerrar recursos, inicializar bases de datos de prueba o detener mocks de manera ordenada.

Mocking: unittest.mock incluye Mock y MagicMock. MagicMock implementa metodos magicos por defecto como __len__ o __iter__, util cuando se necesita simular objetos que usan dunder methods. Para reemplazar metodos de instancia o de clase se usa patch o patch.object; por ejemplo se puede mockear un metodo get_name para que devuelva un valor controlado durante la prueba y verificar que el mock fue invocado.

Un caso habitual es simular fechas. Si una funcion is_weekday depende de datetime.date.today es recomendable parchear datetime en el modulo donde se usa, es decir usar @patch(weekday.datetime) y no parchear la libreria datetime globalmente. El decorador patch inyecta el mock como parametro del test y garantiza resultados reproducibles.

doctest complementa a unittest cuando se desea que la documentacion contenga ejemplos ejecutables que tambien actuen como pruebas automatizadas; es una forma sencilla de mantener ejemplos y pruebas alineados con el codigo.

En Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, aplicamos buenas practicas de testing desde el diseño hasta la entrega para garantizar calidad en proyectos de software a medida. Nuestro equipo de especialistas en inteligencia artificial, ciberseguridad y servicios cloud aws y azure integra pruebas automatizadas en pipelines de CI CD y realiza evaluaciones de seguridad para reducir riesgos y acelerar despliegues.

Si necesitas desarrollar soluciones robustas y adaptadas a negocio mira nuestros servicios de desarrollo de aplicaciones a medida y descubre como incorporamos modelos y agentes inteligentes en proyectos reales consultando la seccion de inteligencia artificial. Tambien ofrecemos servicios de ciberseguridad, pentesting, servicios inteligencia de negocio y soluciones con power bi para mejorar la toma de decisiones.

Palabras clave incluidas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Integrar unittest y doctest en el ciclo de desarrollo ayuda a mejorar la confiabilidad, facilitar la entrega continua y mantener la calidad del software.

Si quieres que Q2BSTUDIO adapte una estrategia de testing automatizado, integre pruebas en tus pipelines CI CD o desarrollemos software a medida con foco en seguridad y escalabilidad, contactanos para convertir requisitos en soluciones productivas.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat