Skip to main content

allure-pytest-ext

Extensions for allure-pytest focused on test ergonomics and clear reporting.

This plugin adds two capabilities on top of Allure's standard API:

  • with allure.step(title, propagate=True, ...): make steps fail even if exceptions inside are caught by user code; optionally re-raise on the parent after the step finishes.
  • with allure.aggregate_step(title): run all child steps and aggregate failures into a single error raised at the end.

Links

  • Live Allure demo report (GitHub Pages): pytest-allure-propagate report
  • The demo report is generated automatically on tag creation (release workflow), and can also be built manually via the "Allure Pages" workflow.
  • Official Allure docs: https://allurereport.org
  • Allure pytest page on PyPI: https://pypi.org/project/allure-pytest/

Installation

Official (uv)

uv add allure-pytest-ext

Alternative (pip)

pip install allure-pytest-ext

Compatibility

  • Python: 3.8 – 3.13
  • Allure pytest adapter: designed for allure-pytest versions 2.13.3–2.15.0. At runtime, the plugin emits a warning if the installed allure-pytest version is outside this range.

Quick start

  1. Write tests using the plugin’s features where they add value in your flow.
import pytest
import allure


def test_propagate_caught_error() -> None:
    # Your code catches the error locally, but you still want the step to fail
    # and the error to surface at the test level.
    with allure.step('parnet-step')
        try:
            with allure.step("child-step", propagate=True):
                raise ValueError("missing required field: id")
        except Exception:
            ...
            # Not only the child-step will apper red,
            # also the parnet-step will apper yellow, but It won't raise an expecptiom


def test_aggregate_sibling_failures() -> None:
    # Run independent checks and see all failures together rather than failing fast.
    with allure.aggregate_step("check downstream services"):
        with allure.step("service A health"):
            raise RuntimeError("timeout")
        with allure.step("service B schema"):
            ... # this step will run
        # now the step `check downstream services` will rise the expection
  1. Run tests and generate Allure results folder.
uv run pytest --alluredir=.allure-results --ignore=tests/test_mock.py
# or
pytest --alluredir=.allure-results --ignore=tests/test_mock.py
  1. Serve the report locally.
allure serve .allure-results
  1. Optional: log step start/end in test logs

Enable source logger messages for step START/END via any of the following:

pytest --alluredir=.allure-results --ignore=tests/test_mock.py --allure-log-steps
# pytest.ini
allure_log_steps = true
ALLURE_EXT_LOG_STEPS=1 pytest --alluredir=.allure-results --ignore=tests/test_mock.py

API additions

  • allure.step(title: str, propagate: bool = False, raise_on_parent: bool = False)

    • propagate=True: if any exception occurs inside the step and is caught by test code, the step is still marked failed.
    • raise_on_parent=True: when used together with propagate=True, re-raise the first observed exception after the step exits (affects the parent scope).
  • allure.aggregate_step(title: str)

    • Executes all nested steps even if some fail. At the end, raises an aggregated error comprising all child failures.
    • The aggregated error type is allure_pytest_ext.plugin.AggregateError.

Configuration

  • Source logger step events (START/END) can be enabled via any of:

    • CLI: --allure-log-steps
    • pytest.ini: allure_log_steps = true
    • Env: ALLURE_EXT_LOG_STEPS=1 (or ALLURE_LOG_STEPS=1)
  • Debug tracing (prints when exceptions are seen inside steps):

    • Env: ALLURE_EXT_DEBUG_TRACE=1

Development

# Setup dev environment
uv sync --all-extras --dev

# Lint, type-check, test
uv run black --check src tests
uv run flake8 src tests
uv run mypy --strict src tests
uv run pytest -q --ignore=tests/test_mock.py

License

MIT

Release files for allure-pytest-ext 2.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for allure-pytest-ext 2.15.0
File Size Uploaded
allure_pytest_ext-2.15.0.tar.gz 17.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for allure-pytest-ext 2.15.0
File Interpreter ABI Platform
allure_pytest_ext-2.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.4 kB

Release files / allure_pytest_ext-2.15.0.tar.gz

Download URL allure_pytest_ext-2.15.0.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
74b97c681e31078d353b4405ad6d5dca1351d341493be88792ef94a88ba9ff6c
BLAKE2b-256 checksum
How to use checksums
98fbf4c36cce618e93a67617c413687f9183a1e5f72dc687bff873d2c9b88366
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2025.

Transparency log

Release files / allure_pytest_ext-2.15.0-py3-none-any.whl

Download URL allure_pytest_ext-2.15.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cbb5efeb777e966fe464072f25e8ef09089a323b3a121ad7a3b8aa5328214d4c
BLAKE2b-256 checksum
How to use checksums
d6efd509db522e7bd39ad2583357a10ee581e2cf99accd3d2895b48a4567a172
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

2.15.0 This release

2 release files

2.14.3

2 release files

2.14.2

2 release files

2.14.1

2 release files

2.14.0

2 release files

2.13.5

2 release files

2.13.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page