Comment exclure de se moquer d'un package à partir de python rapport de couverture à l'aide de nosetests
Actuellement, j'essaie d'utiliser la maquette de la bibliothèque pour écrire des nez unittests en python.
Après la finition de base exemple, j'ai maintenant essayé d'utiliser nosetests --with-coverage
et maintenant, j'ai la maquette de l'emballage et le paquet j'ai essayé de " se moquer de loin sont présentés dans le rapport sur la couverture. Est-il possible d'exclure ces?
Ici, c'est la classe que je veux tester:
from imaplib import IMAP4
class ImapProxy:
def __init__(self, host):
self._client = IMAP4(host)
Et les cas de test:
de se moquer de l'importation patch
from ImapProxy import ImapProxy
class TestImap:
def test_connect(self):
with patch('ImapProxy.IMAP4') as imapMock:
proxy = ImapProxy("testhost")
imapMock.assert_called_once_with("testhost")
Je suis maintenant obtenir la sortie suivante pour nosetests --with-coverage
.
Name Stmts Miss Cover Missing
------------------------------------------
ImapProxy 4 0 100%
imaplib 675 675 0% 23-1519
mock 1240 810 35% [ a lot of lines]
Est-il de toute façon à l'exclure de la maquette de l'emballage et le imaplib paquet sans avoir à la main une liste blanche mais tous ces paquets par --cover-package=PACKAGE
Grâce à Ned Batchelder je sais maintenant sur le .coveragerc fichier, merci pour ça!
J'ai créé un .coveragerc fichier avec le contenu suivant:
[report]
omit = *mock*
Maintenant ma sortie de fantaisie dans le rapport de couverture:
mock 1240 1240 0% 16-2356
Il ne couvre pas la simulation package plus longtemps, mais encore à l'affiche dans le rapport.
- Je utiliser Coverage.py version 3.5.2 si ce n'est d'aucune aide.
- Essayez d'effacer les données précédentes avec
--cover-erase
.
Vous devez vous connecter pour publier un commentaire.
Créer un .coveragerc fichier qui exclut ce que vous ne voulez pas dans le rapport: http://nedbatchelder.com/code/coverage/config.html
coveragerc
fichier qui contient des inclusions et des omissions. Cependant, le nez ne semble pas pour l'examiner, et procède à l'exécution de la couverture sur l'ensemble de Python bibliothèques (malgrécover_pylib
d'False
dans le fichier de configuration). Une idée de comment faire coveragerc travail avec le nez?Dans votre .coveragerc déplacer votre
omit
entrée de la[report]
section de la[run]
section.[report]
supprime un fichier de déclaration, mais ne modifie pas l' % des calculs.[run]
fonctionne pour moi.J'ai eu une situation similaire, le test d'une série de sous-paquets à l'intérieur de mon principal répertoire du package. J'étais en train de
nosetests
de dans le répertoire de mon module etMock
et d'autres bibliothèques ont été inclus dans le rapport de couverture. J'ai essayé d'utiliser--cover-module my_package
dans nosetests, mais alors les sous-paquets n'ont pas été inclus.Exécutant la commande suivante résolu mon problème:
Donc, si tous les code que vous voulez tester est dans le même répertoire, puis vous pouvez obtenir une couverture pour elle seule, en spécifiant le chemin d'accès du module de
nosetests
. Cela évite la nécessité de mettre en liste blanche chacun des submodules individuellement.(Python 2.7.6, la couverture 4.0.3, le nez 1.3.7)