¿Hay alguna herramienta/biblioteca que calcule el porcentaje de "condición/decisión de cobertura" del código python. Encontré solo coverage.py pero solo calcula el porcentaje de "cobertura de estado".condición de cobertura en python
Respuesta
Coverage.py now includes branch coverage.
Para lo curioso: el código no se modifica antes de ejecutarse.La función de seguimiento rastrea qué líneas siguen en la ejecución y compara esa información con el análisis estático del código de bytes compilado para encontrar posibilidades de ruta no ejecutadas.
¿Está buscando cyclomatic complexity (Wikipedia)? Básicamente, calcula el número de rutas a través de un fragmento de código. Hay algunos proyectos para calcular eso para el código de Python, por ejemplo PyMetrics o this one. Google sin duda traerá más.
Pero no conozco ninguna integración adicional con las pruebas unitarias que le mostrarán la cobertura.
No conozco ninguna herramienta de cobertura de sucursal para Python, aunque he contemplado la posibilidad de escribir una. Mi idea era comenzar con el AST e insertar instrumentación adicional para cada punto de ramificación. Es factible, pero hay algunos casos difíciles.
Por ejemplo,
raise SomeException(x)
cobertura de sucursales para este necesita para comprobar que SomeException (x) se crea una instancia totalmente y no levantó su propia excepción.
assert x, "Oh No!: %r" % (x, y)
Esto necesita comprobar que el texto en el lado derecho de la declaración de aserción se evalúa completamente.
return args.name or os.getenv("NAME") or die("no name present")
Cada uno de los dos primeros términos debe verificarse para la ruta de verdadero/falso, pero no la última. De hecho, el último quizás ni siquiera regrese.
Hubo muchos casos de los que preocuparse y no tuve ninguna necesidad apremiante aparte de la curiosidad, así que no fui a ninguna parte con eso. También me preguntaba si obtendría muchos falsos positivos en los que necesitaría alguna manera de reprimir advertencias específicas.
Si quiere probar esta ruta, comience con Python 2.6 o 3.0. En esas versiones, el módulo AST está documentado y puede crear sus propios nodos AST antes de generar el código o el archivo .pyc.
"o morir" es bastante divertido de leer, y posiblemente fue divertido de escribir;) – myroslav
Yo era programador de Perl antes de cambiar a Python. Eso es un Perl-ismo. Perl nunca fue conocido como un lenguaje aburrido. –
El mismo mantenedor de coverage.py tiene un artículo que habla de una forma de get coverage information at the bytecode level. El método es un poco tonto: se trata de volver a armar los archivos .pyc con números de línea ajustados. Sin embargo, proporciona la mayor granularidad en la medición de cobertura que podría pedir.
No lo he usado yo mismo, pero si está dispuesto a reemplazar el análisis de cobertura con mutation testing, he oído hablar de un probador de mutaciones llamado "molestar".
Mientras estaba haciendo google, también me encontré con a list of python testing tools que menciona algunas posibles herramientas de cobertura de código.
Analizar y modificar el AST es la respuesta correcta, en mi humilde opinión. Ver este documento para una descripción completa de lo que tiene que hacer: "Rama Cobertura hizo fácil para arbitrarias Idiomas"
http://www.semanticdesigns.com/Company/Publications/TestCoverage.pdf
Parece que "instrumental" implementa la cobertura condición:
Link about coverage.py and instrumental
Alguien ha probado? Tiene un pequeño número de versión. Necesito algo en lo que pueda confiar.
- 1. ¿Cuál es la "condición de cobertura"?
- 2. Optimización de cobertura de cadenas en Python
- 3. Race-condición creación de carpeta en Python
- 4. Condición Asignación en Python ciclo Mientras
- 5. Prueba unitaria distribuida y cobertura de código en Python
- 6. Cobertura de cobertura para pruebas de integración en Maven
- 7. Cobertura de código/cobertura recomendada valores
- 8. Cómo evitar la condición de cobertura de las dependencias funcionales sin usar -XUndecidableInstances
- 9. nosetests de cobertura, incluyendo los paquetes de Python
- 10. cobertura en eclipse
- 11. herramienta de cobertura en QUnit
- 12. Excluir métodos específicos de cobertura de código de cobertura?
- 13. Excluir métodos de cobertura de código con Cobertura
- 14. SimpleCov cobertura
- 15. Python/rq - el seguimiento de la condición de trabajador
- 16. Cobertura del código y prueba unitaria del código Python
- 17. SQL Server Condición de condición Pregunta
- 18. Cobertura Emma en Enum tipos
- 19. Mostrar cobertura SCCT en Jenkins
- 20. MongoDB Cobertura equivalente en PostgreSQL
- 21. Herramientas de cobertura de código en Java
- 22. Cobertura de código de Java en Hudson
- 23. Variables de condición en C#
- 24. condición de ejecución en XPath
- 25. Cobertura del código de medición en Delphi
- 26. Cobertura de código en Lambda Expressions
- 27. Condición en un EventTrigger
- 28. Como-condición en CouchDB
- 29. Estilo pregunta condición agains condición == NULL
- 30. Averiguar cobertura de la prueba
> ¿Está buscando la complejidad ciclomática (Wikipedia)? No. Gracias por la información interesante. > Pero no conozco ninguna integración adicional con las pruebas unitarias que le muestren la cobertura. Yo también;) –
La complejidad ciclomática no está relacionada básicamente con la cobertura del estado. –