Сводка
В этом модуле вы изучили функции 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.