Регрессионный тест Python: воспроизведите ошибку в calculatetax
Регрессионный тест для дефекта в 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
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- pytest fixture: переиспользование модели в тестовом модуле
- Первые тесты на pytest: нормальные сценарии, граничные случаи и исключения — задача по Python
- Python: Параметризованные тесты для валидатора имени пользователя
- Фикстуры pytest и scope: напишите тесты для очереди
- Python: Напиши тесты для функции сохранения отчёта с tmppath
- Python: Напиши тесты для PricingService с stub-репозиторием
