Задача курса

Регрессионный тест Python: воспроизведите ошибку в calculatetax

Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Регрессионный тест: воспроизвести дефект, исправить и подтвердить»

Условие

Регрессионный тест для дефекта в calculate_tax

Что уже дано

В редакторе находится сломанная функция calculate_tax(subtotal, tax_rate): при tax_rate == 0 она возвращает 0, хотя должна вернуть subtotal. Там же есть пустые каркасы двух тестовых функций. Проверяющая система после кода ученика запускает ваши тесты и отдельно подставляет сломанные варианты функции, чтобы убедиться, что тесты действительно ловят регрессии.

Что нужно сделать

  1. Напишите test_zero_tax_rate() с обычными assert, чтобы он падал на исходном дефекте и проходил на правильной формуле.
  2. Напишите test_nonzero_tax_rate(), который подтверждает расчёт ненулевого налога и ловит реализацию, игнорирующую tax_rate.
  3. Исправьте calculate_tax: итог равен subtotal * (1 + tax_rate), включая случай нулевой ставки.

Обе функции test_* не принимают аргументов и ничего не возвращают.

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно. Значения subtotal и tax_rate задаются внутри ваших тестов и скрытых проверок обычными вызовами calculate_tax. Результат функции — число; успешный тест завершается без исключения, а найденная ошибка выражается через AssertionError.

Пример использования

print(calculate_tax(100, 0))
print(calculate_tax(200, 0.1))

Результат:

100
220.00000000000003

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется