Sobes.tech
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()

Это позволяет оптимизировать время выполнения тестов и управлять ресурсами более эффективно.