2009-10-27 11 views
22

Ich bin ein bisschen ein Anfänger mit Python-Unit-Tests und vor allem coverage.py. Ist es wünschenswert, Coverage-Berichte die Abdeckung Ihrer tatsächlichen Testdateien enthalten?Ist es möglich, Testverzeichnisse von coverage.py-Berichten auszuschließen?

Hier ist ein Screenshot meiner HTML report als Beispiel. Sie können sehen, dass der Bericht tests/test_credit_card enthält. Zuerst versuchte ich das tests/ Verzeichnis aus den Berichten zu verzichten, etwa so:

coverage html --omit=tests/ -d tests/coverage 

ich mehrere Varianten dieses Befehls versucht, aber ich konnte nicht für das Leben von mir, die Tests erhalten/ausgeschlossen. Nachdem ich die Niederlage akzeptiert hatte, begann ich mich zu fragen, ob die Testdateien angeblich sind, um in den Bericht aufgenommen zu werden.

Kann jemand etwas Licht darauf werfen? Vielen Dank.

+0

Ich hatte ein ähnliches Problem. Ich wollte keine zusätzlichen Python-Dateien (Standard-Lib usw.) im Coverage-Bericht. Ich endete damit, sie aus dem XML zu streichen: http://stackoverflow.com/questions/2293647/how-do-i-generate-coverage-xml-report-for-a-single-package/2377148#2377148 –

Antwort

16

Es ist eine gute Idee, die Abdeckung Ihrer Tests zu sehen, da sie auf Probleme hinweisen kann. Wenn Ihr Testcode nicht ausgeführt wird, dann hat es nicht viel Sinn gemacht, ihn zu schreiben!

Die, den ich immer erhalten ist, wenn ich zwei Unit-Test-Funktionen die gleichen Namen geben - ich einen neuen Test mehrere Monate nach dem ursprünglichen hinzufügen und nur den gleichen Namen wählen passieren. Das unitest-Framework wird sich darüber nicht beschweren - eine der Funktionen verbirgt die andere und es wird einfach keinen der Tests ausgeführt! Der detaillierte Abdeckungsbericht zeigt das Problem jedoch sofort.

Wenn Sie anderen Code in Ihren Tests haben, der nicht ausgeführt wird, kann dies auch auf andere Fehler hinweisen, obwohl es in der Regel einige Zeilen Code gibt, die möglicherweise nicht behandelt werden, je nachdem, wie die Tests aufgerufen werden , also mach dir keine Sorgen um 100%.

Und wenn Sie Testcode haben, der wirklich nicht mehr benötigt wird, dann ist es immer gut zu löschen!

+2

Nicht wirklich Es ist keine gute Idee, Tests in das Code Coverage-Ergebnis aufzunehmen. Der Prozentsatz soll Ihnen zeigen, was die Testabdeckung Ihres Produktionscodes ist, und nicht indirekt angeben, dass Sie keinen oder keinen Testcode haben. Verwenden Sie verschiedene Methoden, um die Probleme in Ihrem Testcode zu finden, missbrauchen Sie nicht die Code Coverage-Metrik. –

22

coverage html --omit="*/test*" -d tests/coverage

5

erstellen .coveragerc Datei in Ihrem Projektstammordner, und umfasst Folgendes:

[run] 
omit = *tests* 
+0

run omit = * tests * –

+0

Wenn Sie Ihre Antwort ändern müssen, dann können Sie Edit drücken, um dies zu tun – WhatsThePoint

+0

@CynthiaSimiyu, Ihre Antwort war wirklich hilfreich, da ich mehrere Verzeichnisse weglassen musste. – lmiguelvargasf