2016-05-14 14 views
1

Wenn ich versuche, Tests mit Coverage unter Django + Django-Nose in PyCharm durchzuführen, kann ich den Coverage-Report nicht zum Funktionieren bringen. Ich habe es mit dem gebündelten und ohne versucht. Ohne die gebündelten coverage.py ich sehe:PyCharm Code-Coverage für Django + Django-Nose

Traceback (most recent call last): 
    File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module> 
    main() 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 741, in main 
    status = CoverageScript().command_line(argv) 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 481, in command_line 
    return self.do_run(options, args) 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 625, in do_run 
    self.coverage.stop() 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/control.py", line 692, in stop 
    self.collector.stop() 
    File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/collector.py", line 277, in stop 
    "Expected current collector to be %r, but it's %r" % (self, self._collectors[-1]) 
AssertionError: Expected current collector to be <Collector at 0x10e0cfbe0: CTracer>, but it's <Collector at 0x10fa368d0: CTracer> 

Während damit ich sehe:

Traceback (most recent call last): 
    File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module> 
    main() 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 721, in main 
    status = CoverageScript().command_line(argv) 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 438, in command_line 
    self.do_execute(options, args) 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 580, in do_execute 
    self.coverage.stop() 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/control.py", line 410, in stop 
    self.collector.stop() 
    File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/collector.py", line 294, in stop 
    assert self._collectors[-1] is self 
AssertionError 

Meine Tests und Berichterstattung Berichterstattung Arbeit korrekt über die Kommandozeile, das heißt:

$ python manage.py test 

I‘ Ich habe eine Run-Konfiguration mit der Django-Testvorlage erstellt und mache, soweit ich weiß, nichts Besonderes oder Ungewöhnliches. Ist jemand darauf gestoßen und hat es gelöst? Coverage Integration wäre sehr nützlich!

aktualisieren

Dieses Problem mit JetBrains wurde here geöffnet.

Antwort

0

Ich gehe davon aus, dass Sie so etwas wie dies in der Config haben:

NOSE_ARGS = [ 
    '--with-coverage', 
    '--cover-package=foo,bar' 
] 

PyCharm Berichterstattung sprengt, wenn diese konfiguriert ist. Ich gehe davon aus, dass es entweder zwei Fälle von Coverage ausführt oder dass die Coverage-Ausgabe etwas anderes ist als erwartet. So oder so, es scheint, dass Sie es im Moment nicht verwenden können.

Lösungen für jetzt:

  • entfernen NOSE_ARGS Config, und wenn einer von automatisierten/Continuous Integration Tools sie benötigen, sie mit den Abdeckungsoptionen auf der Befehlszeile: python manage.py test --with-coverage --cover-package=foo (wählte ich diese Option wegen der Vorteile in PyCharm)
  • verwenden Deckung nicht in PyCharm

Hinweis: Ich konnte mit diesem Problem eine andere Person finden here.

+0

[KFunk] (http://StackOverflow.com/users/1707152/Kfunk) Sie sind richtig, dass ich diese Werte in meinem 'NOSE_ARGS' habe. Ich stimme zu, dass das Entfernen von ihnen PyCharm gut spielen lässt. In der Zwischenzeit habe ich mit JetBrains einen Bug (vielleicht ist es eine Feature-Anfrage) geöffnet und ich habe dort eine kleine Menge Bewegung gesehen. Wir werden sehen, was daraus wird! Ich akzeptiere deine Antwort, weil es für jetzt das Richtige ist, so traurig das mich macht. –

+0

Wenn/wenn Jetbrains mit einer öffentlichen Ticket-ID zu Ihnen zurückkommt, würde es Ihnen etwas ausmachen, Ihre Frage zu aktualisieren, um den Link unten einzubeziehen? Ich werde auf diesem Ticket posten, und andere möchten das auch tun. – KFunk

+0

Guter Punkt. Erledigt! –

Verwandte Themen