¿Cómo usar adecuadamente la cobertura.py en Python?
Acabo de empezar a usarCobertura.py módulo y así decidió hacer una prueba simple para verificar cómo funciona.
Sample.py
def sum(num1, num2):
return num1 + num2
def sum_only_positive(num1, num2):
if num1 > 0 and num2 > 0:
return num1 + num2
else:
return None
prueba.py
from sample import sum, sum_only_positive
def test_sum():
assert sum(5, 5) == 10
def test_sum_positive_ok():
assert sum_only_positive(2, 2) == 4
def test_sum_positive_fail():
assert sum_only_positive(-1, 2) is None
Como puede ver, todo mi código está cubierto con pruebas y py.test dice que todas pasan. Espero que Coverage.py muestre una cobertura del 100%. Bueno no.
Bueno, es posible que Coverage.py no vea el archivo test.py, así que copié las funciones de prueba ensample.py
archivo y corrió Cobertura nuevamente:
Luego agregué este bloque de código:
if __name__ == "__main__":
print(sum(2, 4))
print(sum_only_positive(2, 4))
print(sum_only_positive(-1, 3))
y eliminó todas las funciones de prueba. Después de eso, Coverage.py muestra 100%:
¿Por que es esto entonces? ¿No debería Coverage.py mostrar cobertura de prueba de código, no solo cobertura de ejecución? He leido un oficialPREGUNTAS MÁS FRECUENTES. para Coverage.py, pero no puedo encontrar la solución.
Dado que muchos usuarios de SO están familiarizados con las pruebas de código y la cobertura de código, espero que me puedan decir dónde me equivoco.
Solo tengo un pensamiento aquí: Coverage.py puede simplemente observar qué líneas de código no se ejecutan, por lo que debería escribir pruebas para esas líneas. Pero hay líneas que ya se ejecutaron pero que no están cubiertas con pruebas, por lo que Coverage.py fallará aquí.