Coverage.py modülünü kullanmaya başladım ve nasıl çalıştığını kontrol etmek için basit bir test yapmaya karar verdim.Python'da coverage.py'yi düzgün şekilde nasıl kullanabilirim?
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
test.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
Gördüğünüz gibi, bütün kod testler ve py.test kaplıdır hepsini geçmek söylüyor. Coverage.py'nin% 100 kapsam göstermesini bekliyorum. Peki hayır.
Eh, Coverage.py test.py dosyayı göremeyebilirsiniz, bu yüzden sample.py
dosyaya Test fonksiyonları kopyalanıp tekrar Kapsama ran:
Sonra
kod bloğunu ekledi: Tüm test işlevlerini kaldırılmış ve kaldırılmıştır. Neden bu kadar
geçerli: Bundan sonra, Coverage.py% 100 gösteriyor? Coverage.py, kod yürütme kapsamını değil, yalnızca yürütme kapsamını göstermeli mi? Coverage.py için bir resmi F.A.Q. okudum, ancak çözümü bulamıyorum.
Pek çok SO kullanıcısı kod testi ve kod kapsamını bildiğinden, umarım nerede olduğunu söyleyebilirim.
Burada sadece bir düşüncem var: Coverage.py yalnızca hangi kod satırlarının yürütülmediğini izleyebilir, bu nedenle bu satırlar için sınamalar yazmalıyım. Ancak, daha önce yürütülen ancak testlerle ele alınmayan satırlar var. Bu nedenle Coverage.py burada başarısız olacaktır.
Kapsama/pytest'i nasıl çağırıyorsunuz? –
@Rogalski pytest: 'python -m py.test test.py' ve kapsam:' python -m kapsama koşusu sample.py' (Windows'ta) – Groosha