Fixtures autouse

Введение в тестирование на Python

Alexander Levin

Data Scientist

Аргумент autouse

  • Необязательный булев аргумент фикстуры
  • Передаётся в декоратор фикстуры
  • При autouse=True функция фикстуры выполняется независимо от запроса
  • Помогает сократить число избыточных вызовов фикстур
Введение в тестирование на Python

Когда использовать

Используется, когда нужно применить определённую подготовку или настройку среды для всех тестов.

Например, когда необходимо гарантировать, что все тесты:

  • Работают с одними и теми же данными
  • Используют одинаковые подключения (данные, API и т. д.)
  • Имеют единую конфигурацию среды
  • Снабжены мониторингом, логированием или профилированием

Во всех таких случаях следует использовать аргумент «autouse».

Введение в тестирование на Python

Пример autouse

Пример фикстуры с «autouse»:

import pytest
import pandas as pd

# Autoused fixture
@pytest.fixture(autouse=True)
def set_pd_options():
    pd.set_option('display.max_columns', 5000)

# Test function
def test_pd_options():
    assert pd.get_option('display.max_columns') == 5000
Введение в тестирование на Python

Неверный пример autouse

Неверный пример фикстуры с «autouse»:

import pytest
import pandas as pd

# Wrong autoused fixture
@pytest.fixture(autouse=True)
def wrong_fixture():
    return [1,2,3,4,5]

# Test function
def test_type():
    assert type(wrong_fixture) == list

Исправленный пример фикстуры:

import pytest
import pandas as pd

# Wrong autoused fixture
@pytest.fixture
def correct_fixture():
    return [1,2,3,4,5]

# Test function
def test_type(correct_fixture):
    assert type(correct_fixture) == list
Введение в тестирование на Python

Пример autouse: вывод

Вывод примера:

Вывод примера autouse

Введение в тестирование на Python

Итоги

  • Определение autouse: необязательный булев аргумент декоратора фикстуры
  • Использование: @pytest.fixture(autouse=True)
  • Преимущество: сокращает число избыточных вызовов фикстур и упрощает код
  • Особенность: при autouse=True функция фикстуры выполняется независимо от запроса
  • Когда применять: когда нужна единая подготовка или настройка среды для всех тестов
  • Примеры использования:
    • Чтение и подготовка данных для всех тестов
    • Настройка подключений и параметров среды
    • Реализация мониторинга, логирования или профилирования
Введение в тестирование на Python

Давайте потренируемся!

Введение в тестирование на Python

Preparing Video For Download...