Est-il possible d'exclure les répertoires de test de coverage.py rapports?

Je suis une sorte de débutant avec les tests unitaires python, et en particulier coverage.py. est-il souhaitable que les rapports de couverture incluent la couverture de vos fichiers de test réels?

Voici une capture d'écran de mon rapport HTML à titre d'exemple.

, Vous pouvez voir que le rapport comporte tests/test_credit_card. Au début, j'essayais d'omettre le tests/ répertoire de rapports, comme ceci:

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

J'ai essayé plusieurs variantes de cette commande mais je ne pouvais Pas pour la vie de moi obtenir le tests/ exclus. Après avoir accepté la défaite, j'ai commencé à me demander si les fichiers de test sont peut-être supposés être inclus dans le rapport.

Quelqu'un peut-il faire la lumière sur cela?

28
demandé sur Billal Begueradj 2009-10-27 09:08:06

3 réponses

Edit: je pense que je suis maintenant d'accord avec le commentaire ci-dessous à propos de ce n'est pas un bon idée de mélanger un test de votre code de production avec un test de vos tests code. Je ne peux pas supprimer une réponse acceptée, donc je la laisserai inchangée.

** s'il vous plaît downvote ma réponse! **


C'est une bonne idée de voir la couverture de vos tests aussi des problèmes. Si votre code de test n'est pas exécuté, il n'y avait pas grand intérêt à l'écrire!

Le un que j'obtiens toujours est quand je donne deux fonctions de test unitaire le même nom - j'ajoute un nouveau test plusieurs mois après l'original et arrive juste à choisir le même nom. Le framework unittest ne se plaindra pas à ce sujet - l'une des fonctions cache l'autre et il n'exécutera tout simplement pas l'un des tests! Le rapport de couverture détaillé montre le problème immédiatement cependant.

Si vous avez un autre code dans vos tests qui n'est pas exécuté, cela peut également pointer vers d'autres bogues, bien que Généralement il y ait souvent quelques lignes de code standard qui pourraient ne pas être couvertes en fonction de la façon dont les tests sont invoqués, alors ne vous obsédez pas d'arriver à 100%.

Et si vous avez un code de test qui n'est plus nécessaire, alors il est toujours bon de supprimer!

13
répondu Scott Griffiths 2018-09-13 16:23:05

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

29
répondu user3128809 2013-12-23 07:30:08

Créez un fichier .coveragerc dans le dossier racine de votre projet et incluez les éléments suivants:

[run]
omit = *tests*
11
répondu Cynthia Simiyu 2017-08-16 19:00:52