with tutorial the framework español applications python nose nosetests

python - tutorial - the django project



running nose: con cobertura para obtener todos los archivos del paquete, pero no otras dependencias y librerías (3)

Mi carpeta de proyecto (sí, sé que es la mejor práctica) es algo como:

. ├── app.py ├── otherscript.py ├── tests/ └── tools/ ├── __init__.py └── toolfile.py

Necesito nose --with-coverage para probar los scripts .py en la carpeta principal, la carpeta de tools y excluir la carpeta de tests (aunque realmente no me importa excluir eso)

Cuando corro basico

nose --with-coverage

Obtengo cobertura en todas las dependencias y librerías instaladas (matraz, solicitudes, etc.)

cuando corro

nose --with-coverage --cover-package=folder name (or . or ./)

Recibo cobertura para la carpeta de pruebas. el archivo tools/__init__.py y app.py pero no para el resto de los scripts:

> (opentaba-server) D:/username/pathto/opentaba-server>nosetests --with-coverage -- cover-package=./ ... Name > Stmts Miss Cover Missing > ----------------------------------------------------------------------- Tests/functional_tests/test_return_json 26 0 100% > Tests/unit_test/test_createdb 0 0 100% > Tests/unit_test/test_scrape 0 0 100% app > 63 15 76% 22, 24, 72-81, 8 8-106, 133 tools/__init__ > 0 0 100% > ----------------------------------------------------------------------- TOTAL 89 15 83% > ---------------------------------------------------------------------- Ran 3 tests in 5.182s OK

Cuando corro con la --cover-inclusive flag . Simplemente falla con:

nosetests-scripts.py: error: no such option: --with-coverage

Me alegraré por cualquier ayuda con esto


Mis pruebas / archivo nose_setup_coverage.cfg :

[nosetests] verbosity=1 detailed-errors=1 with-coverage=1 cover-html=1 cover-html-dir=../../out/cover #this is the line that fixed my equivalent of your issue #by "climbing up" from tests/ but skipping python''s **site-packages** cover-package=.. where=/Users/jluc/kds2/py/tests

agregar cover-package=.. (en el archivo cfg) y ejecutar desde el directorio de pruebas me permitió cubrir todos mis directorios de python, pero no django y otras cosas de terceros.

Esta es mi estructura de directorios (menos algunas cosas que no son de Python):

. ├── lib ├── non_app ├── ps_catalog ├── pssecurity ├── pssystem ├── static ├── static_src ├── staticfiles ├── templates ├── tests └── websec

Por último, aunque no parezca documentado, la cobertura, como se ejecuta desde pruebas de detección, seleccionará y utilizará un archivo .coveragerc en el directorio actual (prueba) (no puede pasarlo a través de la línea de comandos o en el archivo cfg de la nariz, eso es para el plugin de la cubierta ).

En ese archivo, la sección omitir le permite un control más preciso sobre qué directorios excluir:

omit=/Users/jluc/kds2/env/lib/python2.7/* */batch/* /Users/jluc/kds2/py/non_app/* */migrations/*

ejecutando las pruebas en bash:

nosetests -c nose_setup_coverage.cfg

ps añadiendo - --cover-erase a lo anterior, reinicia la cobertura


Por defecto las pruebas no se incluirán en el informe de cobertura. Puede hacer que aparezcan (en realidad, es una muy buena idea asegurarse de que sus pruebas se ejecuten correctamente y que no se ignoren las pruebas de nombres duplicados) con --cover-tests

En cualquier caso, las nosetests --help es tu amigo. Lo más probable --cover-inclusive indicador de cobertura --cover-inclusive elimine el complemento de cobertura y otras opciones (para el complemento) no estén disponibles. Puedes intentar depurarlo lanzando nose a través de pdb .

Como alternativa, puede ejecutar la cobertura como un módulo independiente que inicia pruebas de la nariz.


Tuve un problema muy similar con el código generado. La solución fue excluir el código generado o el código de herramientas en su caso solo de los informes.

Así que ahora usamos pruebas de narices para ejecutar nuestras pruebas como

nosetests --with-coverage --cover-inclusive --cover-package=$(PACKAGE)

y luego, creamos los informes manualmente, por lo que

coverage combine coverage report --omit ''tools/*''

Por lo tanto, cobertura.py cubrirá su paquete de herramientas, pero no aparecerán en los informes.