Sobes.tech
Back to questions
Junior — Middle
75

Можете объяснить, что означает термин 'скоуп' в контексте фикстур?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

В контексте фикстур (например, в pytest) термин "скоуп" (scope) определяет область видимости и время жизни фикстуры — то есть, как часто она создаётся и уничтожается.

Основные варианты скоупа:

  • function (по умолчанию): фикстура создаётся заново для каждой тестовой функции.
  • class: фикстура создаётся один раз на каждый класс тестов.
  • module: фикстура создаётся один раз на каждый модуль (файл с тестами).
  • session: фикстура создаётся один раз на всю сессию запуска тестов.

Например, фикстура с scope='module' будет инициализирована один раз перед запуском всех тестов в модуле и уничтожена после их завершения. Это полезно для дорогих по времени операций, которые можно переиспользовать.

Пример:

import pytest

@pytest.fixture(scope='module')
def db_connection():
    conn = create_connection()
    yield conn
    conn.close()