Pytest
  • Введение
  • Пример тестирования
  • fixture (Фикстуры)
    • Параметризация
    • декораторы в питоне
    • Пример использования
  • 📚Практика
    • API OpenWeatherMap
    • API OMDBapi
  • scope
  • Запуск тестов через терминал
    • пример иерархии каталогов для организации тестов и их запуска с помощью Pytest
  • argparse
    • Создание интерфейса командной строки
Powered by GitBook
On this page

fixture (Фикстуры)

Фикстуры (fixtures): Фикстуры позволяют предварительно настроить и очистить ресурсы перед и после выполнения тестов. Это улучшает управление состоянием тестового окружения.

import pytest

@pytest.fixture
def setup_data():
    data = {"key": "value"}
    return data

def test_fixture_example(setup_data):
    assert setup_data["key"] == "value"

Фикстуры в pytest - это механизм, предоставляющий удобный способ предварительной настройки и очистки ресурсов для выполнения тестов. Они позволяют задавать действия, которые нужно выполнить перед и после выполнения теста или группы тестов. Фикстуры в pytest обеспечивают легкость и гибкость при организации тестового окружения.

Вот пример использования фикстур в pytest:

import pytest

# Простая фикстура без параметров
@pytest.fixture
def setup_data():
    data = {"key": "value"}
    return data

# Фикстура с параметром
@pytest.fixture
def setup_data_with_parameter(request):
    param_value = request.param
    data = {"key": param_value}
    return data

# Фикстура с параметром, но используя маркер
@pytest.fixture(params=[1, 2, 3])
def setup_data_with_marker(request):
    param_value = request.param
    data = {"key": param_value}
    return data

def test_fixture_example(setup_data):
    assert setup_data["key"] == "value"

# Использование фикстуры с параметром
@pytest.mark.parametrize("input, expected", [(1, 2), (2, 4), (3, 6)])
def test_multiply_by_two(input, expected):
    result = input * 2
    assert result == expected

# Использование фикстуры с параметром, заданной маркером
def test_setup_data_with_marker(setup_data_with_marker):
    assert setup_data_with_marker["key"] in [1, 2, 3]

В данном примере:

  • setup_data - это простая фикстура без параметров, которая возвращает словарь данных.

  • setup_data_with_parameter - это фикстура с параметром, который передается через маркер parametrize при определении тестов.

  • setup_data_with_marker - фикстура с параметром, определенным через маркер. Тест, использующий эту фикстуру, будет выполнен трижды с разными значениями параметра.

Преимущества использования фикстур в pytest:

  1. Переиспользование кода: Фикстуры позволяют избежать дублирования кода для подготовки и очистки данных перед и после тестов.

  2. Параметризация: Фикстуры могут быть параметризованы, что делает возможным выполнение тестов с разными наборами данных.

  3. Управление состоянием тестового окружения: Фикстуры предоставляют контроль над состоянием окружения перед и после выполнения тестов, что важно для поддержания стабильности и надежности тестов.

  4. Использование вложенных фикстур: Вы можете определять фикстуры, зависящие от других фикстур, создавая иерархию настроек.

Для использования фикстур в тестах, вы просто указываете их в качестве параметров функций тестов. pytest обнаруживает фикстуры автоматически по их именам и подставляет их значения в соответствующие параметры тестовых функций.

PreviousПример тестированияNextПараметризация

Last updated 1 year ago