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:
wurden in den Komponententests getestet (d. h. alle nicht getesteten Dateien fehlen und sind nicht in der Gesamtabdeckung enthalten)
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?
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.
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]