scope
В Pytest scope используется для определения времени жизни фикстур, то есть того, сколько раз они будут созданы и использованы в течение выполнения тестов. Pytest поддерживает четыре разных уровня scope:
function: Это наименьший уровень scope. Фикстура будет создаваться заново для каждой тестовой функции. Это означает, что каждая функция получит свой собственный экземпляр фикстуры.
class: Фикстура будет создана один раз для каждого класса тестов. Все тестовые методы внутри класса будут использовать один и тот же экземпляр фикстуры.
module: Фикстура будет создана один раз для всего модуля тестов. Все тесты внутри модуля будут использовать один и тот же экземпляр фикстуры.
session: Это самый высокий уровень scope. Фикстура будет создана один раз для всего сеанса выполнения тестов. Все тесты во всех модулях будут использовать один и тот же экземпляр фикстуры.
Для определения scope фикстуры в Pytest используется аргумент scope
в декораторе @pytest.fixture
. Например:
использования каждого уровня scope в Pytest:
function:
В этом примере фикстура setup
будет создаваться заново для каждой функции test_function_1
и test_function_2
, что позволяет им иметь независимые состояния.
class:
Здесь фикстура setup
будет создаваться один раз для класса TestClass
, и все тесты внутри этого класса будут использовать один и тот же экземпляр фикстуры.
module:
В этом примере фикстура setup
будет создаваться один раз для всего модуля, и все тесты внутри этого модуля будут использовать один и тот же экземпляр фикстуры.
session:
В этом примере фикстура setup
будет создаваться один раз для всего сеанса выполнения тестов, и все тесты во всех модулях будут использовать один и тот же экземпляр фикстуры.
Общий пример
давайте создадим простой тестовый пример, где мы будем менять уровень scope фикстуры и видеть разницу между запусками.
В этом примере каждая фикстура создает свое сообщение при установке и демонтаже. После этого мы определили несколько тестов, использующих эти фикстуры. Затем мы различаем, когда каждая фикстура будет установлена и демонтирована, в зависимости от ее scope.
Вы можете запустить этот тестовый файл и увидеть, как разные фикстуры устанавливаются и демонтируются в разное время в зависимости от их scope.
Last updated