otra objetos metodos metodo llamar lista importar funciones clases clase python testing code-coverage

objetos - llamar metodo de otra clase python



¿Cover.py mide la función y las definiciones de clase? (2)

Creo que su problema se describe en las FAQ :

P: ¿Por qué los cuerpos de funciones (o clases) se muestran como ejecutados, pero las líneas de definición no lo hacen?

Esto sucede porque la cobertura se inicia después de que se definen las funciones. Las líneas de definición se ejecutan sin medición de cobertura, luego se inicia la cobertura y luego se llama a la función. Esto significa que el cuerpo se mide, pero la definición de la función en sí no lo es.

Para solucionar esto, comience la cobertura antes. Si usa la línea de comandos para ejecutar su programa con cobertura, entonces todo su programa será monitoreado. Si está utilizando la API, debe llamar a cover.start () antes de importar los módulos que definen sus funciones.

Estoy tratando de lograr una cobertura del 100% para un módulo básico de Python. Uso el módulo de cobertura.py de Ned Batchelder para probarlo.

1 class account(object): 2 def __init__(self, initial_balance=0): 3 self.balance = initial_balance 4 def add_one(self): 5 self.balance = self.balance + 1

Estas son las pruebas.

class TestAccount(unittest.TestCase): def test_create_edit_account(self): a = account1.account() a.add_one()

Aquí es lo que el informe de cobertura que recibo.

COVERAGE REPORT = Name Stmts Miss Cover Missing ----------------------------------------------------- __init__ 1 1 0% 1 account1 5 3 40% 1-2, 4 account2 7 7 0% 1-7

Como podemos ver, las líneas 1-2 y 4 no están cubiertas, que son las definiciones. El resto de líneas se ejecutan.


Siguiendo la respuesta de jcollado:

Tengo este problema con la nariz Django que solo cubre las líneas utilizadas por las pruebas.

Para solucionarlo, manage.py primero manage.py con cobertura y después de lanzar las pruebas. .coverage archivo .coverage contendrá ambos informes.

Mi primer comando es una costumbre que imprime la configuración de mi proyecto. Ejemplo:

coverage run ./manage.py settings && ./manage.py test myapp