Добавить в корзинуПозвонить
Найти в Дзене
QA & DevOps Infinity

Шпаргалка по командам pytest

pytest — это мощный инструмент для тестирования Python-приложений. Его можно запустить с разными командами и ключами для настройки тестов, управления отчетами, выбора конкретных тестов и диагностики. Основная команда для запуска тестов: pytest Запуск определенных тестов или файлов: pytest test_example.py pytest test_example.py::test_function_name Ключи: -k "expression": Запуск тестов, соответствующих шаблону. pytest -k "test_name and not slow" -m "marker": Запуск тестов с указанным маркером. pytest -m "smoke" -v или --verbose: Более подробная информация о запуске тестов. pytest -v -q или --quiet: Минимальный вывод. pytest -q С использованием плагина pytest-xdist: pytest -n 4 -n [num]: Количество процессов для выполнения тестов. С использованием плагина pytest-timeout: pytest --timeout=10 Ключи: --maxfail=[num]: Прерывает выполнение после указанного числа ошибок. pytest --maxfail=2 --tb=style: Формат трейсбека (например, short, long, line). pytest --tb=short JUnit XML отчет: pytest --ju
Оглавление

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

1. Запуск тестов

Основная команда для запуска тестов:

pytest
  • Запускает все тесты, найденные в текущей директории и ее поддиректориях.

2. Фильтрация тестов

Запуск определенных тестов или файлов:

pytest test_example.py
pytest test_example.py::test_function_name

Ключи:

-k "expression": Запуск тестов, соответствующих шаблону.

pytest -k "test_name and not slow"

-m "marker": Запуск тестов с указанным маркером.

pytest -m "smoke"

3. Подробный вывод

-v или --verbose: Более подробная информация о запуске тестов.

pytest -v

-q или --quiet: Минимальный вывод.

pytest -q

4. Параллельный запуск

С использованием плагина pytest-xdist:

pytest -n 4

-n [num]: Количество процессов для выполнения тестов.

5. Тайм-ауты тестов

С использованием плагина pytest-timeout:

pytest --timeout=10

Ключи:

  • --timeout=SECONDS: Устанавливает максимальное время выполнения теста.

6. Управление отчетами

--maxfail=[num]: Прерывает выполнение после указанного числа ошибок.

pytest --maxfail=2

--tb=style: Формат трейсбека (например, short, long, line).

pytest --tb=short

7. Генерация отчетов

JUnit XML отчет:

pytest --junitxml=report.xml

HTML отчет (с плагином pytest-html):

pytest --html=report.html

Allure отчет (с плагином pytest-allure-adaptor):

pytest --alluredir=allure-results

8. Повторное выполнение тестов

С плагином pytest-rerunfailures:

pytest --reruns 3

--reruns [num]: Количество повторных запусков упавших тестов.

9. Пропуск и пометка тестов

Пометка в коде:

import pytest
@pytest.mark.smoke
def test_example():
assert True

Запуск тестов с указанной меткой:

pytest -m smoke

10. Ожидание и замедление

Ускорение или задержка выполнения:

pytest --capture=no # Вывод логов в реальном времени
pytest --durations=5 # Показать 5 самых медленных тестов

11. Управление зависимостями и плагинами

Установка плагинов:

pip install pytest-html pytest-xdist pytest-timeout

Список доступных плагинов:

pytest --trace-config

12. Настройка путей

Запуск из определенной директории:

pytest tests/

Добавление путей:

pytest --rootdir=project/

13. Логирование

Запись логов в файл:

pytest <тест> -s > test_output.log

Плагин pytest-html позволяет создавать красивые HTML-отчеты, содержащие результаты тестов, включая вывод, статус и логи.

Установка:

pip install pytest-html

Запуск с генерацией HTML-отчета:

pytest test_case.py --html=report.html

Отчет будет сохранен в файл report.html и откроется в браузере. Он включает:

  • Результаты тестов (пройдено/провалено).
  • Логи (если включены).
  • Стек вызовов при ошибках.

14. Отладка тестов

Остановка выполнения при ошибке:

pytest --pdb


Запуск в режиме отладки:

pytest --pdbcls=IPython.terminal.debugger:Pdb

15. Полезные ключи

Ключ -rP

Ключ -r в pytest отвечает за контроль над тем, какие дополнительные отчеты выводятся в консоль по завершению тестов. С ним можно указать, какие сводки тестов (summary) нужно отображать.

  1. Опция -r принимает флаги, где каждая буква отвечает за определенный тип тестов:
  2. P — показывает отчеты о "print" сообщениях (логах), захваченных во время выполнения тестов.
  3. x — показывает краткое сообщение об упавших тестах.
  4. X — отображает все сообщения о тестах, которые были помечены как xfailed (ожидаемо упавшие).
  5. s — выводит захваченные сообщения stdout.
  6. f — отображает упавшие тесты.
  7. E — выводит сообщения об ошибках.
  8. F — отображает файлы, где произошли ошибки.