Покрытие функции 100%, а обычные клиенты получили скидку VIP
def discount(total, is_vip):
rate = 0.2 if is_vip else 0.2 # опечатка: должно быть 0
return total * (1 - rate)
def test_vip_discount():
assert discount(1000, is_vip=True) == 800
Отчёт coverage показывает 100% строк функции. Почему опечатка не поймана?
- Строка выполнилась, но ветка is_vip=False ни разу не проверялась
- coverage не учитывает тернарные выражения и завышает процент
- Опечатка в числе не влияет на результат при total=1000
- Покрытие 100% гарантирует корректность, ошибка в самом тесте
