Как зарегистрировать кастомные маркеры и где это настраивается?
1️⃣ Как кратко ответить
Кастомные маркеры регистрируются в файле конфигурации pytest.ini, tox.ini или setup.cfg в секции [pytest] с использованием ключевого слова markers. Это позволяет добавлять пользовательские метки для тестов, которые можно использовать для их фильтрации и организации.
2️⃣ Подробное объяснение темы
Кастомные маркеры в pytest позволяют организовать тесты, добавляя к ним метки, которые можно использовать для фильтрации и управления запуском тестов. Это особенно полезно в больших проектах, где необходимо запускать только определенные группы тестов.
Зачем нужны кастомные маркеры?
- Организация тестов: Позволяют группировать тесты по категориям, например,
slow,fast,database,api. - Фильтрация тестов: Позволяют запускать только определенные тесты, используя команду
pytest -m <marker>. - Документация: Улучшают читаемость и понимание тестов, добавляя контекст.
Как зарегистрировать кастомные маркеры?
Для регистрации кастомных маркеров необходимо добавить их в файл конфигурации проекта. Это может быть один из следующих файлов: pytest.ini, tox.ini или setup.cfg.
Пример регистрации кастомных маркеров
-
Создайте или откройте файл конфигурации: Обычно это
pytest.iniв корне проекта. -
Добавьте секцию
[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 — это мощный инструмент для организации и управления тестами. Они позволяют легко группировать тесты и управлять их запуском, что особенно полезно в больших проектах с множеством тестов. Регистрация маркеров в конфигурационном файле и их использование в тестах делает процесс тестирования более гибким и управляемым.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться