Je viens de commencer à écrire des tests unitaires pour un projet python que j'utilise unittest
et coverage
. Je ne teste actuellement qu'une petite proportion, mais je j'essaie de déterminer la couverture du code
Je lance mes tests et j'obtiens la couverture en utilisant ce qui suit
python -m unittest discover -s tests/
coverage run -m unittest discover -s tests/
coverage report -m
Le problème que j'ai est que coverage
indique que j'ai une couverture de code de 44% et ne compte que les fichiers qui:
ont été testés dans les tests unitaires (c'est-à-dire que tous les fichiers qui n'ont pas été testés sont manquants et ne sont pas dans la couverture globale)
étaient dans les bibliothèques dans l'environnement virtuel et la couverture du code des tests réels aussi. Certes, il ne devrait pas inclure les tests réels dans les résultats?
De plus, il indique que les fichiers qui sont réellement testés dans ces tests unitaires n'ont que les premières lignes testées (qui sont dans la plupart des cas les instructions d'importation)
Comment puis-je obtenir une couverture de code plus réaliste ou est-ce ainsi?
Ajouter --source=.
à la ligne d'exécution coverage
. Il limitera à la fois le focus sur le répertoire courant et recherchera .py
fichiers qui n'étaient pas exécutés du tout.
Si vous utilisez à la place nose
comme testrunner, le plugin de couverture correspondant fournit
--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]