Allure - maxred01/QA2825 GitHub Wiki
Установка
- Установите Allure:
- MacOS:
brew install allure - Windows:
scoop install allure
- MacOS:
- Установите библиотеку
allure-pytest:pip install allure-pytest
Генерация отчета
- Запустите тесты с сохранением результатов в директорию
allure-results:pytest --alluredir=./allure-results tests/ - Сгенерируйте отчет:
allure generate ./allure-results --clean -o ./allure-report - Откройте отчет в браузере:
allure open ./allure-report
или
-
Запустите тесты с сохранением результатов в директорию
allure-results:pytest -s -v --alluredir=./results -
Сгенерируйте отчет:
allure serve ./results
Основные декораторы Allure
1. Название и описание теста
import allure
@allure.title("Проверка логина с валидными данными")
@allure.description("Тест проверяет успешный вход в систему")
def test_login():
# Код теста
pass
2. Уровень серьезности теста
@allure.severity(allure.severity_level.CRITICAL)
def test_critical_feature():
pass
3. Ссылки и метки
@allure.link("https://example.com", name="Документация")
@allure.issue("ISSUE-123")
@allure.testcase("TC-456")
def test_with_links():
pass
Шаги и параметризация
1. Детализация шагов
def test_with_steps():
with allure.step("Открыть главную страницу"):
# Действие 1
with allure.step("Ввести логин и пароль"):
# Действие 2
2. Параметризация тестов
import pytest
@pytest.mark.parametrize("username, password", [("user1", "pass1"), ("user2", "pass2")])
def test_parametrized_login(username, password):
allure.dynamic.title(f"Тест логина для пользователя: {username}")
Вложение файлов и данных
def test_attach_data():
# Текстовое вложение
allure.attach("Текст лога", name="log", attachment_type=allure.attachment_type.TEXT)
# Скриншот (пример)
allure.attach.file("./screenshot.png", name="Скриншот", attachment_type=allure.attachment_type.PNG)
Группировка тестов
@allure.epic("Авторизация")
@allure.feature("Базовые сценарии")
@allure.story("Успешный вход")
def test_grouped():
pass
Пример полного теста
import allure
import pytest
@allure.epic("Пользовательские операции")
@allure.feature("Профиль")
class TestProfile:
@allure.story("Изменение пароля")
@allure.severity(allure.severity_level.NORMAL)
@pytest.mark.parametrize("old_pass, new_pass", [("12345", "67890")])
def test_change_password(self, old_pass, new_pass):
with allure.step("Войти в профиль"):
pass
with allure.step("Изменить пароль"):
allure.attach(f"Старый пароль: {old_pass}\nНовый пароль: {new_pass}", name="Данные")
Справка
- Официальная документация: Allure Framework Docs