Сводка

Завершено

В этом модуле вы изучили функции pytest, которые помогают создавать более экспрессивные и обслуживаемые тесты. Вы использовали @pytest.mark.parametrize для выполнения одной и той же тестовой функции с множеством входных значений. Pytest собирает каждый набор параметров в виде отдельного тестового случая, поэтому отчеты могут точно определить, какие входные данные передаются или завершаются сбоем.

Вы также работали с светильниками. Фикстуры предоставляют повторно используемый код настройки, делают зависимости теста явными через аргументы функций и могут управлять очисткой с помощью yield-основы разборки и соответствующих областей фикстуры. Вы применили эти идеи, написав параметризованные тесты и рефакторизовав тест на основе классов из стиля xUnit setup_method() и teardown_method() подхода к пользовательской фикстуре, использующей фикстуру tmp_path pytest для временного управления файлами. Вы также изучили встроенные фикстуры, включая tmp_path, который предоставляет временный pathlib.Path каталог для каждого вызова тестовой функции, а monkeypatch временно изменяет атрибуты, значения словаря, переменные sys.path среды или текущий рабочий каталог и восстанавливает эти изменения после завершения запроса теста или фикстуры.

Теперь вы можете:

  • Используйте параметризацию для покрытия нескольких входных данных без повторения тестовых функций.
  • Прочитайте результаты выполнения pytest, чтобы определить, какие значения параметров прошли или провалились.
  • Создайте пользовательские светильники для совместного использования логики установки и очистки.
  • Выберите области светильника в зависимости от частоты выполнения установки и времени очистки.
  • Поместите общие светильники таким conftest.py образом, чтобы тесты в одном каталоге и его подкаталогах могли запрашивать их без явного импорта.
  • Используйте встроенные фикстуры, включая tmp_path для временных файлов и monkeypatch для изменений состояния с ограниченной областью действия, чтобы изолировать тесты, зависящие от файлов, переменных среды, импорта или внешнего состояния.

Дополнительные сведения см. в документации pytest по параметризации тестов, фикстурам, встроенным фикстурам, временным каталогам и файлам, настройкам в стиле xUnit и monkeypatch.