Почему при использовании yield не будет нового обращения к БД при каждом вызове? Как это влияет на чистоту и целостность тестовых данных?

Сам yield не запрещает новые обращения к БД. В pytest повторное использование значения определяется scope и кэшированием фикстуры, а выполнение SQL — кодом подключения и запросов.

Короткий ответ

Что ответить на собеседовании

Сам yield не запрещает новые обращения к БД. В pytest повторное использование значения определяется scope и кэшированием фикстуры, а выполнение SQL — кодом подключения и запросов.

Подробный разбор

Ответ с пояснениями

Сам yield не запрещает новые обращения к БД. В pytest повторное использование значения определяется scope и кэшированием фикстуры, а выполнение SQL — кодом подключения и запросов.

Фикстура может один раз получить список или передать живое соединение, через которое каждый тест выполнит новые запросы. Разделяемый изменяемый результат способен переносить состояние между тестами. Для чистоты нужны изоляция, подготовка и cleanup, иногда транзакции с учётом отдельных соединений приложения. Нельзя обещать неизменность данных только потому, что вместо return использован yield.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее