webentwicklung-frage-antwort-db.com.de

Wie kann ich sicherstellen, dass die Abdeckung nicht getestete Dateien enthält?

Ich habe gerade angefangen, einige Komponententests für ein python= Projekt zu schreiben, für das ich unittest und coverage verwende. Ich teste derzeit nur einen kleinen Teil, aber ich Ich versuche, die Codeabdeckung herauszufinden

Ich führe meine Tests durch und erhalte die Abdeckung wie folgt

python -m unittest discover -s tests/
coverage run -m unittest discover -s tests/
coverage report -m

Das Problem, das ich habe, ist, dass coverage angibt, dass ich 44% Code-Abdeckung habe und nur die Dateien zählt, die:

  1. wurden in den Komponententests getestet (d. h. alle nicht getesteten Dateien fehlen und sind nicht in der Gesamtabdeckung enthalten)

  2. in den Bibliotheken befanden sich in der virtuellen Umgebung auch Code-Coverages der eigentlichen Tests. Sicherlich sollte es nicht die tatsächlichen Tests in die Ergebnisse einbeziehen?

Außerdem heißt es, dass in den Dateien, die in diesen Komponententests tatsächlich getestet wurden, nur die ersten Zeilen getestet wurden (in den meisten Fällen die Importanweisungen).

Wie erhalte ich eine realistischere Codeabdeckung oder soll das so sein?

35
user4591756

Hinzufügen --source=. in die coverage -Laufzeile. Beides beschränkt den Fokus auf das aktuelle Verzeichnis und sucht nach .py Dateien, die überhaupt nicht ausgeführt wurden.

36
Ned Batchelder

Wenn Sie stattdessen nose als Testrunner verwenden, bietet das Coverage-Plugin dafür

  --cover-inclusive     Include all python files under working directory in
                        coverage report.  Useful for discovering holes in test
                        coverage if not all files are imported by the test
                        suite. [NOSE_COVER_INCLUSIVE]

  --cover-tests         Include test modules in coverage report
                        [NOSE_COVER_TESTS]
1
Daenyth