¿Cómo puedo obtener datos de cobertura de código de las pruebas funcionales de Python BDD utilizando Behave?

No he visto una respuesta para esta pregunta específica ( herramienta de cobertura de prueba para el marco de prueba Behave ) y no he visto ningún resultado de búsqueda de Google que produzca una respuesta suficiente. Por lo tanto…

¿Cómo puedo obtener un informe de cobertura de código de Behave? Me resulta difícil creer que no haya desarrolladores de Python que utilicen la metodología BDD y me parece aún más difícil creer que los desarrolladores de Python que usan BDD lo estén haciendo sin estadísticas de cobertura de código de sus pruebas funcionales. ¿Se puede usar Coverage.py para conducir el Comportamiento para producir una cobertura de código? ¿Cómo?

No sé cómo usar behave, pero utilicé Cucumber para BDD, que creo que probablemente sea casi similar. Y entonces creo que deberías poder usar el comportamiento con cobertura. tienes que especificar qué archivo incluir en el archivo … (lo usé con pepino). A ver si esto podría ayudar.

Espero que esta responda a tu pregunta 🙂

 # .coveragerc to control coverage.py [run] parallel = True # if you want to include tests append tests/* include = src/* *src* [paths] source = src/ */src tests = tests/ */tests 

Siguiendo con la sugerencia de David anterior.

Suponiendo que el código que se va a probar está en un directorio de aplicaciones, agregue lo siguiente a su archivo .coveragerc :

 [run] source=app/ 

Desde la terminal:

 coverage run $(which behave); 

Luego puede usar el informe de cobertura o el html de cobertura de manera normal. Si no especifica el directorio de la aplicación en su archivo .coveragerc , la cobertura probará todas las bibliotecas de Python locales para su instalación.

Behave puede generar datos de cobertura de Junit y el paquete de cobertura puede combinar estos datos de varias ejecuciones de prueba, así como producir un informe HTML que puede leer o publicar automáticamente en su entorno de CI.

Estas son las declaraciones que utilizo actualmente para producir, combinar e informar sobre la cobertura con comportamientos:

 cd your/repo/tests # <-- Make sure you're inside your tests dir! rm -rf behave-reports/* behave --junit --junit-directory behave-reports coverage combine coverage html 

rm -rf behave-reports/* elimina enérgicamente todo lo que se encuentra dentro del directorio behave-reports / para que tenga garantizado un informe de cobertura nuevo o nada en absoluto (en mi caso, se produce un fallo en el CI). Tenga en cuenta que si ejecuta las pruebas localmente, querrá agregar una entrada a su archivo .gitignore (o equivalente) para no agregar ni confirmar los resultados de la prueba.

La ejecución de behave con --junit producirá una salida de junit, mientras que el --junit-directory le indica a comporta dónde escribir esos datos de junit en el disco.

La coverage combine ejecución consume toda la cobertura del código y la combina en un solo archivo de cobertura.

Finalmente, la coverage html produce un bonito informe html que incluye todos los datos de cobertura combinados.

Otra opción, usar la cobertura para ejecutar el script principal de behave:

 coverage run /path/to/lib/python2.7/site-packages/behave/__main__.py 

Por supuesto, querrá especificar en su .coveragerc qué archivos de origen desea incluir.