Ответ
Фикстуры (fixtures) в Pytest — это мощный механизм для подготовки, настройки и очистки тестового окружения. Они позволяют инжектировать зависимости в тестовые функции, избегая дублирования кода и соблюдая принцип DRY (Don't Repeat Yourself).
Основные концепции:
- Объявление: Фикстура — это функция, декорированная
@pytest.fixture. - Использование: Тестовая функция запрашивает фикстуру, указав её имя в качестве параметра.
- Область видимости (scope): Управляет временем жизни фикстуры:
"function"(по умолчанию, для каждого теста),"class","module","session".
Пример: Фикстура для временного файла
import pytest
import os
@pytest.fixture(scope="function")
def temp_config_file(tmp_path): # Используем встроенную фикстуру tmp_path
# SETUP: Создаем файл с конфигом
config_file = tmp_path / "app_config.json"
config_file.write_text('{"timeout": 30}')
yield config_file # Передаем объект файла в тест
# TEARDOWN: Очистка (неявно выполняется tmp_path)
# Код после yield выполнится после теста, даже если он упал
def test_read_config(temp_config_file):
# Фикстура автоматически передается как аргумент
content = temp_config_file.read_text()
assert "timeout" in content
assert "30" in content
Преимущества фикстур:
- Модульность и переиспользование.
- Четкое разделение setup/teardown логики.
- Возможность композиции: фикстуры могут зависеть от других фикстур.
- Автоматическое обнаружение и использование Pytest.
Связь с вопросом: Термин "текстуры" в исходном вопросе, вероятно, является опечаткой или искажением слова "фикстуры" (fixtures).