Pregunta

Estoy usando nariz y Cobertura para generar informes de cobertura. Sólo tengo un paquete en este momento, ae , de modo especifico para cubrir sólo eso:

nosetests -w tests/unit --with-xunit --with-coverage --cover-package=ae

Y aquí están los resultados, los cuales se ven bien:

Name             Stmts   Exec  Cover   Missing
----------------------------------------------
ae                   1      1   100%   
ae.util            253    224    88%   39, 63-65, 284, 287, 362, 406
----------------------------------------------
TOTAL              263    234    88%   
----------------------------------------------------------------------
Ran 68 tests in 5.292s

Sin embargo cuando corro coverage xml, la cobertura tira en paquetes más de lo necesario, incluyendo Python correo electrónico y Registro paquetes que no tienen nada que ver con mi código.

Si me quedo coverage xml ae, me sale este error:

No source for code: '/home/wraith/dev/projects/trimurti/src/ae': 
[Errno 21] Is a directory: '/home/wraith/dev/projects/trimurti/src/ae'

¿Hay una manera de generar el XML para sólo el ae paquete?

¿Fue útil?

Solución 2

Yo no era capaz de encontrar la respuesta a esta, por lo que estoy extracción de los elementos de los paquetes no deseados tras la transformación. Esta función toma el archivo original XML, el nombre del elemento para comprobar, su atributo para comprobar, el patrón (o lista de palabras) desea guardar, y una ruta de archivo de destino para el nuevo archivo.

from lxml import etree

def keep(self, xmlfile, elem_name, attr_name, pattern, dst):
    try: 
        rep = re.compile(pattern)
    except TypeError:
        # Create regex pattern if a list is given. 
        # TypeError: unhashable type: 'list'
        rep = re.compile("|".join(pattern))

    dom = etree.parse(xmlfile)
    for node in dom.findall('//%s' % elem_name):
        if not rep.search(node.get(attr_name)):
            node.getparent().remove(node)

    dom.write(dst)

Para resolver mi problema, estoy llamando de esta manera:

keep('coverage.xml', 'package', 'name', 'ae|tests', 'wanted-coverage.xml')

Otros consejos

He tenido un problema similar y lo resolvió con la opción --omit. Esto hizo que se ejecute mucho más rápido y reduce el tamaño de coverage.xml de 2MB a 70kB.

--omit=PRE1,PRE2,...  Omit files when their filename path starts with one of
                      these prefixes.

Estoy en Mac OS X, por lo que omite la Biblioteca / / y / Aplicaciones / carpetas:

$ coverage xml --omit=/Library/,/Applications/

En otros sistemas, es posible --omit=/usr/ más útiles.

¿Usted intentó:

coverage xml ae
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top