Una herramienta muy potente que tiene perl es el módulo Devel::Cover. Para python hay un módulo equivalente, coverage. Este tipo de programas, lo que hace es un análisis de cubrimiento de código, orientado sobre todo a los test. Esto es muy útil para saber si nuestros test de la aplicación cubren la totalidad del código (caso ideal) y si no, cuanto nos falta para llegar a ello, resaltando las partes de código ejecutadas y las que no.
Para instalarlo, podemos bajarnos las fuentes y compilarlas o usar el repositorio.
| $ sudo apt-get install python-coverage |
Es un programa muy fácil de usar. El programa dispone de una pequeña ayuda:
| $ python-coverage help Coverage.py, version 3.2 Measure, collect, and report on code coverage in Python programs. usage: coverage Commands: annotate Annotate source files with execution information. combine Combine a number of data files. erase Erase previously collected coverage data. help Get help on using coverage.py. html Create an HTML report. report Report coverage stats on modules. run Run a Python program and measure code execution. xml Create an XML report of coverage results. Use "coverage help Use "coverage help classic" for help on older command syntax. For more information, see http://nedbatchelder.com/code/coverage |
Generación de informes
Lo primero que tenemos que hacer es ejecutar el programa. Esto lo que hará es generar un fichero .coverage con la información de cubrimiento.
| $ python-coverage run example02.py |
Para ver los resultados, usamos la opción report:
| $ python-coverage report -m example02.py Name Stmts Exec Cover Missing ----------------------------------------- example02 14 14 100% |
Luego podemos generar el fichero html:
| $ python-coverage html -d coverhtml $ firefox coverhtml/index.html |
Usar la API
Esto no acaba aquí. Si uno quiere, puede hacer un programa para ejecutar el análisis en los puntos del programa que se quiera y luego generar un informe.
La API está bien explicado, y la verdad, es bastante sencillo.Un ejemplo:
__________________________________________________
# -*- coding: utf-8 -*- import coverage cov = coverage.coverage() cov.start() def cuadrados(lista): """ Calcula el cuadro de los números de la lista >>> l = [0,1,2,3] >>> cuadrados(l) [0, 1, 4, 9] """ return [n ** 2 for n in lista] def _test(): import doctest doctest.testmod() _test() cov.stop() cov.html_report(directory='covhtml')_______________________________________________
| $ python mycov.py |
El programa crea un directorio covhtml con los resultados.
Referencias


1 comentarios:
Interesante, interesante. Tendré que pasarle alguna prueba a yacf ....
Publicar un comentario en la entrada
Por favor, no escriba al estilo SMS y use signos de puntuación en caso necesario