Back to questions
Middle
8
Расскажи про скоупы фикстур в pytest.
Companies where asked
Perfomance lab
Answer from AI
sobes.tech AI
В pytest фикстуры могут иметь разные скоупы, которые определяют время жизни и область действия фикстуры:
- function (по умолчанию) — фикстура создаётся заново для каждой тестовой функции.
- class — фикстура создаётся один раз на весь класс тестов.
- module — фикстура создаётся один раз на весь модуль (файл с тестами).
- package — фикстура создаётся один раз на пакет (директорию с init.py).
- session — фикстура создаётся один раз на всю сессию запуска тестов.
Например, если нужно инициализировать базу данных один раз на весь модуль, можно задать скоуп module:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_db_connection()
yield conn
conn.close()
Это позволяет оптимизировать время выполнения тестов и управлять ресурсами более эффективно.