Actualmente trato de usar la biblioteca de simulacros para escribir algunos tests de unidad de nose básicos en python.Cómo excluir el paquete de simulacro del informe de cobertura de Python usando nosetests
Después de terminar algunos ejemplos básicos, traté de usar nosetests --with-coverage
y ahora tengo el paquete simulado y el paquete que traté de "burlarse" se muestra en el informe de cobertura. ¿Existe la posibilidad de excluir estos?
Aquí es la clase quiero probar:
from imaplib import IMAP4
class ImapProxy:
def __init__(self, host):
self._client = IMAP4(host)
Y el caso de prueba: del parche simulacro de importación
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")
ahora consigo la siguiente salida para 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]
¿Hay alguna manera de excluir el paquete simulado y el paquete imaplib sin tener que listas blancas manualmente todos menos aquellos paquetes por --cover-package=PACKAGE
Gracias a Ned Batchelder ahora sé sobre el archivo .coveragerc, gracias por eso!
he creado un archivo de .coveragerc con el siguiente contenido:
[report]
omit = *mock*
Ahora mi salida para maqueta en el informe de la cobertura es:
mock 1240 1240 0% 16-2356
No cubre el paquete simulacro por más tiempo, pero todavía lo muestra en el informe.
Uso Coverage.py, versión 3.5.2 si esto sirve de ayuda.
tratar de borrar los datos anteriores con '--cover-erase'. – xbello