Сам yield не запрещает новые обращения к БД. В pytest повторное использование значения определяется scope и кэшированием фикстуры, а выполнение SQL — кодом подключения и запросов.
Почему при использовании yield не будет нового обращения к БД при каждом вызове? Как это влияет на чистоту и целостность тестовых данных?
Сам yield не запрещает новые обращения к БД. В pytest повторное использование значения определяется scope и кэшированием фикстуры, а выполнение SQL — кодом подключения и запросов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сам yield не запрещает новые обращения к БД. В pytest повторное использование значения определяется scope и кэшированием фикстуры, а выполнение SQL — кодом подключения и запросов.
Фикстура может один раз получить список или передать живое соединение, через которое каждый тест выполнит новые запросы. Разделяемый изменяемый результат способен переносить состояние между тестами. Для чистоты нужны изоляция, подготовка и cleanup, иногда транзакции с учётом отдельных соединений приложения. Нельзя обещать неизменность данных только потому, что вместо return использован yield.