Задача курса
Регрессионный тест Python: воспроизведите ошибку в calculatetax
Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Регрессионный тест: воспроизвести дефект, исправить и подтвердить»
Условие
Регрессионный тест для дефекта в calculate_tax
Что уже дано
В редакторе находится сломанная функция calculate_tax(subtotal, tax_rate): при tax_rate == 0 она возвращает 0, хотя должна вернуть subtotal. Там же есть пустые каркасы двух тестовых функций. Проверяющая система после кода ученика запускает ваши тесты и отдельно подставляет сломанные варианты функции, чтобы убедиться, что тесты действительно ловят регрессии.
Что нужно сделать
- Напишите
test_zero_tax_rate()с обычнымиassert, чтобы он падал на исходном дефекте и проходил на правильной формуле. - Напишите
test_nonzero_tax_rate(), который подтверждает расчёт ненулевого налога и ловит реализацию, игнорирующуюtax_rate. - Исправьте
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
