2012-03-23 17 views
12

PyCharm ha un'azione "Esegui con copertura" per gli obiettivi di test di Django. Questo esegue i test, ma mostra copertura di test zero (0% di file, non coperti nel riquadro del progetto e tutto rosso nell'editor). Il controllo o la deselezione di "Use bundled coverage.py" non fa differenza.PyCharm, Django: copertura codice zero

Esecuzione gli stessi test dalla CLI dà i risultati attesi:

$ 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% 

cosa potrebbe causare questo?

risposta

1

ho avuto un problema simile con il PyCharm bundle coverage.py

I test sono stati eseguiti bene, ma i risultati di copertura non sono stati caricati, "0%" o "non coperti" in tutto il mondo.

C'è stato un errore registrato nella console PyCharm però, dopo l'uscita dei test, che è stato legato 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 

La mia soluzione era quella di eseguire il coverage.py in bundle con la possibilità di ignorare gli errori: "-i".

ho modificare il file "run_coverage.py" bundle, si può vedere la sua posizione nel output della console, e aggiungere l'opzione "-i" nell'ultima riga:

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

a:

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

Questo ha funzionato per me, l'errore viene ignorato e tutti i dati di copertura sono ora caricati nell'interfaccia utente.

Se si utilizza "-i" per risolvere il problema, una soluzione migliore sarebbe quella di correggere gli errori, ma fino ad allora, si vedranno i risultati della copertura.

+0

Grazie per la risposta dettagliata. Questo è l'output nella console: http: // pastebin.com/aWdaETJh Dice "Fatto: x di x (x.xx s)" sopra la console, su un pannello. Sembra che parte dell'output sia inghiottito da PyCharm, inclusi eventuali errori. Potrebbe succedere davvero? – abesto

+0

Ho aggiunto l'opzione -i (deve essere prima di -o, altrimenti prova a scrivere l'output in un file chiamato "-i"). Non ha risolto il problema, quindi suppongo che qualcos'altro sia sbagliato qui. – abesto

+0

Ho avuto un problema simile. Ciò che ha risolto il problema era deselezionare "bundled coverage.py" nelle impostazioni del mio progetto e installare 'coverage installazione pip 'nel mio virtualenv. –

0

Ho anche cercato di risolvere questo problema in Ubuntu.

Al momento ho provato sia con apt-get Python che con lo stack Enthought Canopy, senza successo. In Windows invece funziona (usando Canopy).

Ho usato il seguente codice:

# 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

ho avuto un problema simile. Ho finito per la generazione di dati XML utilizzando nosetests --cover-xml, ma si può anche generare un XML da una precedente esecuzione coverage.py con coverage xml

Poi tale relazione può essere caricato comodamente in PyCharm/IDEA dal Analizza -> Mostra la copertura dei dati ... - > Pulsante + e selezione del file xml.

0

Se si accede al progetto tramite qualsiasi collegamento simbolico nel percorso, la visualizzazione della copertura avrà esito negativo.

Provare ad aprire lo stesso progetto attraverso il percorso reale e si otterrà il comportamento corretto.

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

PS: rinfrescante vecchia questione, come bug ancora non è stato risolto.

Problemi correlati