Allure - maxred01/QA2825 GitHub Wiki

Установка

  1. Установите Allure:
    • MacOS: brew install allure
    • Windows: scoop install allure
  2. Установите библиотеку allure-pytest:
    pip install allure-pytest
    

Генерация отчета

  1. Запустите тесты с сохранением результатов в директорию allure-results:
    pytest --alluredir=./allure-results tests/
    
  2. Сгенерируйте отчет:
    allure generate ./allure-results --clean -o ./allure-report
    
  3. Откройте отчет в браузере:
    allure open ./allure-report
    

или

  1. Запустите тесты с сохранением результатов в директорию allure-results:

    pytest -s -v --alluredir=./results
    
  2. Сгенерируйте отчет:

    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="Данные")

Справка