La guía paso a paso o código que hallarás en este artículo es la solución más eficiente y efectiva que encontramos a esta inquietud o problema.
Código fuente:Lib / trace.py
los trace
El módulo le permite rastrear la ejecución del programa, generar listas de cobertura de declaraciones anotadas, imprimir relaciones entre llamantes y personas que llaman y enumerar funciones ejecutadas durante la ejecución de un programa. Se puede utilizar en otro programa o desde la línea de comandos.
Ver también
- Coverage.py
-
Una popular herramienta de cobertura de terceros que proporciona salida HTML junto con funciones avanzadas como cobertura de sucursales.
Uso de la línea de comandos
los trace
El módulo se puede invocar desde la línea de comandos. Puede ser tan simple como
python -m trace --count -C . somefile.py ...
Lo anterior se ejecutará somefile.py
y generar listados anotados de todos los módulos de Python importados durante la ejecución en el directorio actual.
--help
-
Mostrar uso y salir.
--version
-
Muestre la versión del módulo y salga.
Nuevo en la versión 3.8: Adicional --module
opción que permite ejecutar un módulo ejecutable.
Opciones principales
Se debe especificar al menos una de las siguientes opciones al invocar trace
. los --listfuncs
La opción es mutuamente excluyente con la --trace
y --count
opciones. Cuando --listfuncs
se proporciona, ni --count
ni --trace
se aceptan y viceversa.
-c, --count
-
Produzca un conjunto de archivos de lista anotados al finalizar el programa que muestre cuántas veces se ejecutó cada instrucción. Ver también
--coverdir
,--file
y--no-report
debajo.
-t, --trace
-
Muestra las líneas a medida que se ejecutan.
-l, --listfuncs
-
Muestra las funciones ejecutadas al ejecutar el programa.
-r, --report
-
Producir una lista anotada de una ejecución de programa anterior que utilizó el
--count
y--file
opción. Esto no ejecuta ningún código.
-T, --trackcalls
-
Muestre las relaciones de llamada expuestas al ejecutar el programa.
Modificadores
-f, --file=
-
Nombre de un archivo para acumular recuentos en varias ejecuciones de seguimiento. Debe usarse con el
--count
opción.
-C, --coverdir=
-
Directorio donde van los archivos del informe. El informe de cobertura de
package.module
se escribe en el archivodir/package/module.cover
.
-m, --missing
-
Al generar listados anotados, marque las líneas que no se ejecutaron con
>>>>>>
.
-s, --summary
-
Cuando usas
--count
o--report
, escriba un breve resumen en stdout para cada archivo procesado.
-R, --no-report
-
No genere listados anotados. Esto es útil si tiene la intención de realizar varias ejecuciones con
--count
y luego producir un solo conjunto de listados anotados al final.
-g, --timing
-
Prefije cada línea con la hora desde que se inició el programa. Solo se usa durante el rastreo.
Filtros
Estas opciones pueden repetirse varias veces.
--ignore-module=
-
Ignore cada uno de los nombres de módulo dados y sus submódulos (si es un paquete). El argumento puede ser una lista de nombres separados por una coma.
--ignore-dir=
-
Ignore todos los módulos y paquetes en el directorio y subdirectorios nombrados. El argumento puede ser una lista de directorios separados por
os.pathsep
.
Interfaz programática
class trace.Trace(count=1, trace=1, countfuncs=0, countcallers=0, ignoremods=(), ignoredirs=(), infile=None, outfile=None, timing=False)
-
Cree un objeto para rastrear la ejecución de una sola declaración o expresión. Todos los parámetros son opcionales. contar habilita el recuento de números de línea. rastro habilita el seguimiento de la ejecución de la línea. countfuncs habilita la lista de las funciones llamadas durante la ejecución. contadores habilita el seguimiento de la relación de llamadas. ignorantes es una lista de módulos o paquetes para ignorar. ignorados es una lista de directorios cuyos módulos o paquetes deben ignorarse. en archivo es el nombre del archivo desde el que leer la información de recuento almacenada. archivar es el nombre del archivo en el que se escribe la información de recuento actualizada. momento permite mostrar una marca de tiempo relativa a cuando se inició el seguimiento.
run(cmd)
-
Ejecute el comando y recopile estadísticas de la ejecución con los parámetros de seguimiento actuales. cmd debe ser un string o objeto de código, adecuado para pasar a
exec()
.
runctx(cmd, globals=None, locals=None)
-
Ejecute el comando y recopile estadísticas de la ejecución con los parámetros de seguimiento actuales, en los entornos globales y locales definidos. Si no está definido, globales y lugareños por defecto a los diccionarios vacíos.
runfunc(func, /, *args, **kwds)
-
Llama func con los argumentos dados bajo el control del
Trace
objeto con los parámetros de seguimiento actuales.
results()
-
Devolver un
CoverageResults
objeto que contiene los resultados acumulativos de todas las llamadas anteriores arun
,runctx
yrunfunc
por lo dadoTrace
ejemplo. No restablece los resultados de seguimiento acumulados.
class trace.CoverageResults
-
Un contenedor para los resultados de la cobertura, creado por
Trace.results()
. No debe ser creado directamente por el usuario.update(other)
-
Combinar datos de otro
CoverageResults
objeto.
write_results(show_missing=True, summary=False, coverdir=None)
-
Escribe los resultados de la cobertura. Colocar show_missing para mostrar líneas que no tuvieron coincidencias. Colocar resumen incluir en la salida el resumen de cobertura por módulo. coverdir especifica el directorio en el que se enviarán los archivos de resultados de cobertura. Si
None
, los resultados de cada archivo fuente se colocan en su directorio.
Un ejemplo simple que demuestra el uso de la interfaz programática:
import sys import trace # create a Trace object, telling it what to ignore, and whether to# do tracing or line-counting or both. tracer = trace.Trace( ignoredirs=[sys.prefix, sys.exec_prefix], trace=0, count=1)# run the new command using the given tracer tracer.run('main()')# make a report, placing output in the current directory r = tracer.results() r.write_results(show_missing=True, coverdir=".")
Reseñas y valoraciones del tutorial
Al final de todo puedes encontrar los comentarios de otros desarrolladores, tú asimismo eres capaz insertar el tuyo si dominas el tema.