Задача курса

Python: Напиши тесты для функции сохранения отчёта с tmppath

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

Условие

Напиши тесты для функции сохранения отчёта с tmp_path

Тебе нужно написать pytest-тесты для функции save_report, которая создаёт файл отчёта по заданному пути. Все файловые операции в тестах должны использовать tmp_path — никаких жёстко заданных путей внутри проекта.

Что уже дано

Проверяющая система скрыто определяет функцию save_report в том же пространстве имён до запуска твоего кода:

from pathlib import Path

def save_report(path: Path, lines: list[str]) -> None:
 """Записывает строки в файл, каждую с новой строки."""
 path.write_text("\n".join(lines), encoding="utf-8")

Функция принимает путь к файлу (Path) и список строк (list[str]), записывает их в файл через "\n".join(lines). Функция уже доступна по имени save_report — импортировать ничего не нужно.

Также доступны pytest и Path из pathlib.

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

Напиши в редакторе pytest-файл с тремя тест-функциями:

  1. test_save_report_creates_file(tmp_path) — проверяет, что файл не существует до вызова save_report, а после вызова существует.

  2. test_save_report_content(tmp_path) — проверяет, что содержимое созданного файла точно соответствует ожидаемому: строки соединены через "\n" без завершающего переноса.

  3. test_save_report_empty_lines(tmp_path) — проверяет поведение при передаче пустого списка: файл создаётся и содержит пустую строку ("").

Во всех трёх тестах:

  • путь к файлу строится от tmp_path (например, tmp_path / "report.txt");
  • не используются жёстко заданные пути вроде Path("report.txt") или open("output.txt", "w").

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно.

Проверяющая система после твоего кода:

  1. Запускает все три тест-функции на правильной реализации save_report и требует, чтобы они прошли.
  2. Подменяет save_report на сломанные мутанты по очереди и требует, чтобы соответствующий тест поднял AssertionError:
  • мутант для теста 1: функция не создаёт файл вообще (тело — pass);
  • мутант для теста 2: функция записывает строки через ", " вместо "\n", то есть содержимое не совпадает;
  • мутант для теста 3: функция при пустом списке не создаёт файл (тело — pass при пустом lines).

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

РешениеPython
Без регистрации · результат не сохраняется
Python: Напиши тесты для функции сохранения отчёта с tmppath