Чем фикстуры со `scope="session"` отличаются от фикстур со `scope="function"`?

Область видимости (scope) фикстур в тестах определяет, как долго и где доступна фикстура в процессе выполнения тестов.

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

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

Область видимости (scope) фикстур в тестах определяет, как долго и где доступна фикстура в процессе выполнения тестов.

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

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

Область видимости (scope) фикстур в тестах определяет, как долго и где доступна фикстура в процессе выполнения тестов.

В pytest, например, фикстуры могут иметь следующие области видимости:

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

Пример фикстуры с областью видимости module:

import pytest

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

Это значит, что соединение с базой данных будет создано один раз для всех тестов в модуле, что экономит время и ресурсы.

Выбор области видимости зависит от того, насколько часто нужно создавать и уничтожать ресурсы, и от изоляции тестов.

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

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

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

Подробнее