🔖 Справочник: Allure Framework

← К оглавлению урока

⚡ Шпаргалка: Allure за 30 секунд

# Установка
pip install pytest allure-pytest
# + установить Allure CLI отдельно (см. theory.html)

# Запуск тестов
pytest --alluredir=allure-results

# Просмотр отчёта
allure serve allure-results

# Генерация статического отчёта
allure generate allure-results -o allure-report --clean
allure open allure-report
# Шаги в тесте
with allure.step("Описание шага"):
    # действие

# Декоратор на методе
@allure.step("api. Получить список '{id}'")
def get_item(self, id): ...

# Вложение
allure.attach(content, name="Заголовок", attachment_type=allure.attachment_type.TEXT)

Установка

# Python-пакет
pip install pytest allure-pytest

# Windows (Scoop)
scoop install allure

# macOS (Homebrew)
brew install allure

Команды CLI Allure

КомандаЧто делает
pytest --alluredir=allure-resultsЗапустить тесты и сохранить сырые данные для Allure
allure serve allure-resultsЗапустить локальный сервер и открыть отчёт в браузере
allure generate allure-results -o allure-report --cleanСгенерировать статический HTML-отчёт в папку allure-report
allure open allure-reportОткрыть уже сгенерированный статический отчёт
allure --versionПроверить версию Allure CLI

Декораторы разметки тестов

ДекораторУровень примененияОписание
@allure.epic("название")Класс / функцияВерхний уровень группировки — проект или модуль
@allure.feature("название")Класс / функцияФункциональная область (напр. READ, CREATE)
@allure.story("название")ФункцияПользовательская история
@allure.title("название")ФункцияЗаголовок теста в отчёте
@allure.description("текст")ФункцияПодробное описание теста
@allure.id("ID")ФункцияУникальный идентификатор для навигации в коде
@allure.severity("уровень")Класс / функцияКритичность: blocker, critical, normal, minor, trivial

Шаги allure.step

СинтаксисКогда использовать
with allure.step("Описание"): Выделить шаг внутри тела теста
@allure.step("Описание") Декорировать метод — каждый вызов становится шагом
@allure.step("Действие с {param}") Динамически подставить значение параметра метода

Вложения (attachments)

ВызовОписание
allure.attach(content, name="...", attachment_type=allure.attachment_type.TEXT)Прикрепить текстовое содержимое
allure.attachment_type.TEXTТип: обычный текст
allure.attachment_type.PNGТип: изображение PNG (скриншот)
allure.attachment_type.JSONТип: JSON с подсветкой
allure.attachment_type.HTMLТип: HTML-разметка
allure.attachment_type.CSVТип: CSV-таблица

Запуск pytest с фильтрами Allure

# Запустить все тесты и сохранить данные
pytest --alluredir=allure-results

# С подробным выводом
pytest -v --alluredir=allure-results

# Только тесты с определённой меткой pytest
pytest -m smoke --alluredir=allure-results

# Только тест по имени
pytest -k "test_get_companies" --alluredir=allure-results

Структура проекта с Allure

project/
├── api/
│   └── company_api.py        # Класс CompanyApi с @allure.step на методах
├── db/
│   └── company_table.py      # Класс CompanyTable с @allure.step на методах
├── tests/
│   └── test_x_clients_db.py  # Тесты с разметкой Allure
├── allure-results/           # Сырые данные (генерируется pytest)
├── allure-report/            # HTML-отчёт (генерируется allure generate)
└── conftest.py               # Фикстуры pytest (при необходимости)