2012-03-23 20 views
12

PyCharm tiene una acción "Ejecutar con cobertura" para objetivos de prueba Django. Esto ejecuta las pruebas, pero muestra una cobertura de prueba nula (0% de archivos, no cubiertos en el panel del proyecto, y todos rojos en el editor). Verificando o desmarcando "Usar bundled coverage.py" no hace diferencia.PyCharm, Django: cobertura de código cero

Ejecución de las mismas pruebas de la CLI da los resultados esperados:

$ coverage --version 
Coverage.py, version 3.5.1. http://nedbatchelder.com/code/coverage 


$ coverage run ./manage.py test blackbox 
Creating test database for alias 'default'... 
.... 
---------------------------------------------------------------------- 
Ran 4 tests in 0.002s 

OK 
Destroying test database for alias 'default'... 


$ coverage report 
Name      Stmts Miss Cover 
--------------------------------------------- 
__init__      0  0 100% 
blackbox/__init__    0  0 100% 
blackbox/models    5  0 100% 
blackbox/rules/__init__  1  0 100% 
blackbox/rules/board   62  19 69% 
blackbox/tests    49  6 88% 
manage      11  4 64% 
settings      24  0 100% 
--------------------------------------------- 
TOTAL      152  29 81% 

¿Qué puede causar esto?

Respuesta

1

tuve un problema similar con el PyCharm coverage.py incluido

Las pruebas se ejecutan muy bien, pero los resultados no fueron cargados de cobertura, "0%" o "no cubiertas" en todas partes.

Hubo un error al iniciar sesión en la consola PyCharm embargo, a raíz de la salida de las pruebas, que se relaciona coverage.py:

/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python 
"/Applications/PyCharm 2.5 EAP.app/helpers/run_coverage.py" 
run "--omit=/Applications/PyCharm 2.5 EAP.app/helpers" bin/test 

Creating test database for alias 'default'... 
................................ 
---------------------------------------------------------------------- 
Ran xx tests in xxs 

OK 
No source for code: '/path/file.py' (<- error) 

Process finished with exit code 0 

Mi solución fue la de ejecutar el coverage.py incluido con la opción de ignorar errores: "-i".

he editar el archivo "run_coverage.py" incluido, se puede ver su ubicación en la salida de la consola, y añadir la opción "-i" en la última línea:

main(["xml", "-o", coverage_file + ".xml"]) 

a:

main(["xml", "-i", "-o", coverage_file + ".xml"]) 

Esto funcionó para mí, el error se ignora y todos los datos de cobertura se cargan ahora en la interfaz de usuario.

Si usa "-i" resuelve el problema de su lado, una solución mejor sería corregir los errores, pero hasta entonces, verá los resultados de la cobertura.

+0

Gracias por la respuesta detallada. Este es el resultado en la consola: http: // pastebin.com/aWdaETJh Dice "Hecho: x de x (x.xx s)" encima de la consola, en un panel. Parece que PyCharm se traga parte de la salida, incluidos los errores. ¿Podría eso realmente suceder? – abesto

+0

He agregado la opción -i (tiene que estar antes de -o; de lo contrario, intenta escribir en un archivo llamado "-i"). No solucionó el problema, así que supongo que algo más está mal aquí. – abesto

+0

Tuve un problema similar. Lo que lo solucionó fue desmarcar la "cobertura de cobertura.py" en la configuración de mi proyecto e instalar 'cobertura de instalación de pip' en mi cuenta virtual. –

0

También he estado tratando de resolver este problema en Ubuntu.

Por el momento probé con el apt-get Python y la pila Enthought Canopy, sin éxito. Sin embargo, en Windows sí funciona (usando Canopy).

He utilizado el siguiente código:

# in a.py 
class A(object): 

    def p(self, a): 
     return a 

# in test_a.py 
from unittest import TestCase, main 
from a import A 

class TestA(TestCase): 
    def test_p(self): 
     inst = A() 
     val = inst.p("a") 
     self.assertEqual("a", val) 


if _name_ == "__main__": 
    main() 
0

tuve un problema similar. Terminé la generación de datos XML mediante nosetests --cover-xml, pero también se puede generar un xml de una ejecución previa con coverage.py coverage xml

Luego de que el informe puede ser convenientemente cargado en PyCharm/IDEA de la Analizar -> Mostrar datos de cobertura ... - > botón + y seleccionando el archivo xml.

0

Si accede a su proyecto mediante cualquier enlace simbólico en la ruta, la visualización de cobertura fallará.

Intenta abrir el mismo proyecto a través de una ruta real y obtendrás un comportamiento correcto.

https://youtrack.jetbrains.com/issue/PY-17616

PS: Refrescante cuestión de edad, como fallo todavía no se ha fijado.