¿Es posible excluir directorios de prueba de los informes de coverage.py?
-
06-07-2019 - |
Pregunta
Soy una especie de novato con pruebas de unidad de python, y en particular cobertura.py. ¿Es deseable que los informes de cobertura incluyan la cobertura de sus archivos de prueba reales?
Aquí hay una captura de pantalla de mi informe HTML como ejemplo.
Puede ver que el informe incluye tests / test_credit_card
. Al principio intentaba omitir el directorio tests /
de los informes, así:
coverage html --omit=tests/ -d tests/coverage
Probé varias variaciones de ese comando pero pude no durante toda mi vida obtener las pruebas / excluidas. Después de aceptar la derrota, comencé a preguntarme si tal vez se supone que los archivos de prueba se incluirán en el informe.
¿Alguien puede arrojar algo de luz sobre esto?
Solución
Editar: creo que ahora estoy de acuerdo con el comentario a continuación sobre que no es bueno idea de mezclar una prueba de su código de producción con una prueba de su prueba código. No puedo eliminar una respuesta aceptada, así que la dejaré sin cambios.
** ¡Por favor vota mi respuesta! **
Es una buena idea ver la cobertura de sus pruebas, ya que puede señalar problemas. ¡Si su código de prueba no se está ejecutando, entonces no tenía mucho sentido escribirlo!
El que siempre obtengo es cuando le doy el mismo nombre a dos funciones de prueba de unidad: agrego una nueva prueba varios meses después del original y simplemente elijo el mismo nombre. El framework unittest no se quejará de esto: una de las funciones oculta la otra y simplemente no ejecutará una de las pruebas. Sin embargo, el informe detallado de cobertura muestra el problema de inmediato.
Si tiene otro código en sus pruebas que no se está ejecutando, eso también puede apuntar a otros errores, aunque a menudo hay un par de líneas de código repetitivo que pueden no cubrirse dependiendo de cómo se invoquen las pruebas, así que no te obsesiones con llegar al 100%.
Y si tiene un código de prueba que realmente ya no se necesita, ¡siempre es bueno eliminarlo!
Otros consejos
cobertura html --omit = " * / test * " -d pruebas / cobertura
Cree el archivo .coveragerc
en la carpeta raíz del proyecto e incluya lo siguiente:
[run]
omit = *tests*
También puede especificar explícitamente en qué directorio tiene el código que desea cobertura en lugar de decir qué cosas omitir. En un archivo .coveragerc
, si el directorio de interés se llama demo
, esto se ve como
[run]
source = demo