← Назад ко всем вопросам

Как зарегистрировать кастомные маркеры и где это настраивается?

1️⃣ Как кратко ответить

Кастомные маркеры регистрируются в файле конфигурации pytest.ini, tox.ini или setup.cfg в секции [pytest] с использованием ключевого слова markers. Это позволяет добавлять пользовательские метки для тестов, которые можно использовать для их фильтрации и организации.

2️⃣ Подробное объяснение темы

Кастомные маркеры в pytest позволяют организовать тесты, добавляя к ним метки, которые можно использовать для фильтрации и управления запуском тестов. Это особенно полезно в больших проектах, где необходимо запускать только определенные группы тестов.

Зачем нужны кастомные маркеры?

  1. Организация тестов: Позволяют группировать тесты по категориям, например, slow, fast, database, api.
  2. Фильтрация тестов: Позволяют запускать только определенные тесты, используя команду pytest -m <marker>.
  3. Документация: Улучшают читаемость и понимание тестов, добавляя контекст.

Как зарегистрировать кастомные маркеры?

Для регистрации кастомных маркеров необходимо добавить их в файл конфигурации проекта. Это может быть один из следующих файлов: pytest.ini, tox.ini или setup.cfg.

Пример регистрации кастомных маркеров

  1. Создайте или откройте файл конфигурации: Обычно это pytest.ini в корне проекта.

  2. Добавьте секцию [pytest] и зарегистрируйте маркеры:

[pytest]
markers =
    slow: mark a test as slow
    fast: mark a test as fast
    database: mark a test as requiring database access
  • markers — ключевое слово, указывающее на начало списка кастомных маркеров.
  • slow, fast, database — имена кастомных маркеров.
  • Описание после двоеточия помогает понять назначение каждого маркера.

Как использовать кастомные маркеры в тестах?

После регистрации маркеров, их можно использовать в тестах с помощью декоратора @pytest.mark.<marker_name>.

Пример использования кастомных маркеров в тестах

import pytest
​
@pytest.mark.slow
def test_long_running_process():
    # Тест, который выполняется долго
    pass
​
@pytest.mark.fast
def test_quick_function():
    # Быстрый тест
    pass
​
@pytest.mark.database
def test_database_connection():
    # Тест, который требует подключения к базе данных
    pass
  • @pytest.mark.slow — применяет маркер slow к тесту test_long_running_process.
  • @pytest.mark.fast — применяет маркер fast к тесту test_quick_function.
  • @pytest.mark.database — применяет маркер database к тесту test_database_connection.

Как запускать тесты с кастомными маркерами?

Для запуска тестов с определенным маркером используйте команду:

pytest -m slow
  • -m slow — указывает pytest запускать только тесты, помеченные маркером slow.

Заключение

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

Тема: PyTest
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки