¿Qué es Coverage.py?
Coverage.py es una potente herramienta para analizar la cobertura de código en Python. Permite a los desarrolladores identificar qué partes de su código se ejecutan durante las pruebas y cuáles quedan sin usar. Es un componente esencial en el aseguramiento de la calidad del software, ya que ayuda a detectar posibles puntos ciegos en las pruebas.
El objetivo principal de Coverage.py es brindar información detallada sobre qué tan bien tus pruebas cubren el código escrito. La herramienta analiza la ejecución del programa y genera informes que muestran el porcentaje de cobertura por archivo, módulo e incluso por líneas individuales.
Funcionalidades clave de Coverage.py
Coverage.py ofrece una amplia gama de funciones para el análisis de cobertura:
Medición de cobertura por líneas — función básica que rastrea qué líneas de código se ejecutaron durante las pruebas.
Análisis de ramas — función avanzada que verifica si se ejecutaron todas las rutas posibles en estructuras condicionales (if, elif, else).
Generación de informes — creación de informes detallados en varios formatos: texto, HTML, XML y JSON.
Integración con frameworks — funciona a la perfección con frameworks de pruebas populares como pytest, unittest y nose.
Exclusión personalizada — posibilidad de excluir archivos, carpetas o líneas específicas del análisis de cobertura.
Instalación y configuración inicial
Instalación estándar
Para instalar Coverage.py usa pip:
pip install coverage
Instalación con funcionalidades adicionales
Si trabajas con pytest, se recomienda instalar el plugin pytest-cov:
pip install pytest-cov
Para trabajar con archivos de configuración toml:
pip install coverage[toml]
Verificar la instalación
Después de instalar, asegúrate de que Coverage.py funcione correctamente:
coverage --version
Comandos principales y su uso
Ejecutar análisis de cobertura
Ejecución básica del análisis de cobertura para un script de Python:
coverage run my_script.py
Ejecución con parámetros adicionales:
coverage run --source=my_package my_script.py
Ejecutar con el módulo unittest
coverage run -m unittest discover
Ejecutar con pytest
coverage run -m pytest
O usando pytest-cov:
pytest --cov=my_module tests/
Ver el informe de cobertura
Informe de texto en la terminal
coverage report
Ejemplo de salida:
Name Stmts Miss Cover
----------------------------------------
my_module.py 25 3 88%
utils.py 15 0 100%
main.py 20 5 75%
----------------------------------------
TOTAL 60 8 87%
Informe detallado con líneas faltantes
coverage report --show-missing
Informe HTML
coverage html
Después de ejecutar el comando, abre el archivo htmlcov/index.html en tu navegador para ver el informe interactivo.
Informe XML para CI/CD
coverage xml
Informe JSON
coverage json
Gestión de datos de cobertura
Limpiar datos
También en la biblioteca
Aprendizaje automático en Kotlin: revisión de bibliotecas y herramientas
Crossbeam para Rust: guía completa con ejemplos
Event Bus y el patrón Observer en Rust: implementación y ejemplos
Procesamiento de imágenes en Node.js: bibliotecas y herramientas
gRPC para Go (Golang): bibliotecas, ejemplos y guía
Recommendations