В первых тестах мне хватало простых фикстур: вызвать метод создания объекта, передать его в тест через yield, после теста удалить.

Сейчас тестов становится больше, параметры создания отличаются. Появляются сценарии, для которых одного объекта уже может быть недостаточно. Поэтому стал чаще использовать фикстуры-фабрики.

Тест вызывает функцию создания с нужными параметрами. Если понадобится несколько объектов - можно вызвать её несколько раз. Фикстура запоминает, что создала, и после теста всё это удаляет.

Раньше объект создавался при запуске фикстуры. Теперь я могу создавать объекты прямо по ходу теста, а удаление по-прежнему не приходится писать в каждом сценарии.

Но заметил, что сами фабрики постепенно обрастают кодом.

Например, одна из них загружает данные, после чего в приложении асинхронно создаются объекты. Чтобы понять, что потом удалять, я сначала получаю список существующих идентификаторов, запускаю загрузку, жду появления новых объектов и сохраняю их для очистки.

В итоге за одним вызовом фабрики стоит уже довольно много действий. Все вроде бы нужны, но хочется, чтобы через месяц я сам мог быстро разобраться, что там происходит.

Пока думаю, что оставить внутри, а что вынести в отдельные функции.

У вас есть какой-то ориентир, когда фабрику пора упрощать? Или оставляете всё вместе, пока код отвечает за создание и очистку одних и тех же объектов?

#Python #Pytest #TestAutomation