web-dev-qa-db-fra.com

Comment puis-je inclure des fichiers non testés dans la couverture?

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:

  1. 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)

  2. é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?

35
user4591756

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.

36
Ned Batchelder

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]
1
Daenyth