В данной статье представлены примеры использования фикстур (fixture) в pytest. Фикстуры в pytest представляют собой функции, которые можно использовать при автоматизации тестирования для решения следующих задач: выполнение действий до проведения тестирования (например, настройка тестового окружения, создание тестовых данных, различные сетевые подключения, открытие файла и пр.); выполнение действий после проведения тестирования (например, удаление временных данных, формирование отчета, отключение сетевых подключений, закрытие файлов и пр.); вынос типовых действий в отдельные компоненты, что позволяет избежать дублирования кода и улучить его поддержку и читаемость; корректно выполнять необходимые завершающие действия (финализация), даже в случаи ошибок в тестовых сценариях или при их прерывании. Дисклеймер: В статье продемонстрированы синтетические примеры, наполненные методом print(), это сделано только для демонстрации последовательности выполнения шагов в stdout. При создании реальных тестовых кейсов рекомендуется использовать лучшие практики и паттерны программирования и проектирования, а также применяемые стандарты при разработке программного кода. Введение Обертки для тестовых объектов через фикстуры Передача объекта из фикстуры в тесты Передача объекта между тестовыми функциями Параметризация фикстуры Передача параметров из тестовых сценариев в фикстуру для генерации на их основе объектов для выполнения тестов Финализация Для понимания как работают фикстуры в pytest необходимо: умение работать с python; умение работать с фреймворком для автоматизированного тестирования pytest; знать, что в python всё является объектами; принцип работы декоратора (@) для классов, функций и методов. Фикстуры могут располагаться как внутри тестового файла, так и в отдельном файле (conftest.py). Для назначения фикстур используется декоратор "@pytest.fixture". Тестовые объекты можно обернуть в фикстуры, которые будут выполнять действия до и после тестового объекта. Параметры в фикстуре:  "scope" - задает область работы fixture и может принимать следующие значения [ 'session' | 'package' | 'module' | 'class' | 'function' ] "autouse" - автоматически включать данную fixture в область работы, без явного указания  Фикстуры можно использовать для передачи данных или объектов в тестовые сценарии, что позволяет упростить код и повысить его читаемость.  Также можно использовать одну фикстуру в других фикстурах:  Объект в тестовую функцию можно передать и с использованием фикстуры как обертки:   ! Обратите внимание, что при выполнении каждой тестовой функции, значения для переменных тестового класса остаются постоянными и равны значению заданного фикстурой. Примеры создания общего объекта с помощью фикстур для его использования в разных тестовых функциях представлен ниже. Иногда возникает необходимость передавать один и тот же объект между разными тестовыми функциями.   Фикстуры как и обычные тестовые сценарии поддерживают возможность параметризации, что позволяет использовать один тестовый сценарий с различным набором параметров.   Вынесения параметров которые используют фикстуры в тестовые сценарии позволяет создавать универсальные фикстуры и делать код более универсальным.    Тестирование можно разбить на следующие этапы: выполнение действий, до проведения тестирования (создание тестовых пользователей, открытие сетевого подключения, открытие файла и пр.) тестирование выполнение действий, после проведения тестирования (удаление тестовых пользователей, закрытие сетевого подключения, закрытие файла и пр.) Финализация позволяет корректно выполнить последний этап тестирования при ошибках в тестовых сценариях или остановки тестирования.   Если необходимо создать отдельный объект для класса и в конце его корректно завершить, то можно использовать следующий способ:   Инженер