allure-pytest-ext
==================
Extensions for `allure-pytest==2.13.3` adding:
- `with allure.step("...", propagate=True)`: if any exception happens inside the step and is caught by user code,
the step still fails and the original error re-raises after the step exits (unless running inside an aggregate step).
- `with allure.aggregate_step("...")`: runs all child steps even if some fail; after all children finish, raises a single
aggregated exception if any child failed.
Requirements
------------
- Python 3.8+
- `allure-pytest==2.13.3`
- Managed with `uv`
Install
-------
```bash
uv add allure-pytest-ext
```
Usage
-----
```python
import allure
# Propagating a caught error
with pytest.raises(ValueError):
with allure.step("propagate caught", propagate=True):
try:
raise ValueError("boom")
except ValueError:
pass # The step fails and the error is re-raised after the step ends
# Aggregating child failures
with pytest.raises(Exception):
with allure.aggregate_step("aggregate children"):
with allure.step("child 1"):
raise ValueError("first")
with allure.step("child 2"):
raise RuntimeError("second")
```
Development
-----------
```bash
uv sync --all-extras --dev
uv run pytest -q
uv run black --check src tests
uv run flake8 src tests
uv run mypy --strict src tests
```
Raw data
{
"_id": null,
"home_page": null,
"name": "allure-pytest-ext",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8.1",
"maintainer_email": null,
"keywords": "aggregate, allure, propagate, pytest, report, testing",
"author": null,
"author_email": "Rami Hasan <hsn.rami@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/52/fd/749b90a325206be4ed4a35ea3fdef603084814d6d3c6b086c83e77522892/allure_pytest_ext-2.13.4.tar.gz",
"platform": null,
"description": "allure-pytest-ext\n==================\n\nExtensions for `allure-pytest==2.13.3` adding:\n\n- `with allure.step(\"...\", propagate=True)`: if any exception happens inside the step and is caught by user code,\n the step still fails and the original error re-raises after the step exits (unless running inside an aggregate step).\n- `with allure.aggregate_step(\"...\")`: runs all child steps even if some fail; after all children finish, raises a single\n aggregated exception if any child failed.\n\nRequirements\n------------\n\n- Python 3.8+\n- `allure-pytest==2.13.3`\n- Managed with `uv`\n\nInstall\n-------\n\n```bash\nuv add allure-pytest-ext\n```\n\nUsage\n-----\n\n```python\nimport allure\n\n# Propagating a caught error\nwith pytest.raises(ValueError):\n with allure.step(\"propagate caught\", propagate=True):\n try:\n raise ValueError(\"boom\")\n except ValueError:\n pass # The step fails and the error is re-raised after the step ends\n\n# Aggregating child failures\nwith pytest.raises(Exception):\n with allure.aggregate_step(\"aggregate children\"):\n with allure.step(\"child 1\"):\n raise ValueError(\"first\")\n with allure.step(\"child 2\"):\n raise RuntimeError(\"second\")\n```\n\nDevelopment\n-----------\n\n```bash\nuv sync --all-extras --dev\nuv run pytest -q\nuv run black --check src tests\nuv run flake8 src tests\nuv run mypy --strict src tests\n```\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Extensions for allure-pytest: propagate step failures and aggregate step failures",
"version": "2.13.4",
"project_urls": {
"Homepage": "https://github.com/",
"Repository": "https://github.com/"
},
"split_keywords": [
"aggregate",
" allure",
" propagate",
" pytest",
" report",
" testing"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "80aa152e0296dd4d19b69b3d12769dff8321f1a99d0d91ca142ed4c9f5aa6805",
"md5": "74cb0e4de2eb9037de2336dbe57873dd",
"sha256": "a28ed7a3c3ca6d4d2f5a2f987ad543c76876f42e23ac7492b9984134cf99c2b3"
},
"downloads": -1,
"filename": "allure_pytest_ext-2.13.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "74cb0e4de2eb9037de2336dbe57873dd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8.1",
"size": 10734,
"upload_time": "2025-08-22T17:55:27",
"upload_time_iso_8601": "2025-08-22T17:55:27.240071Z",
"url": "https://files.pythonhosted.org/packages/80/aa/152e0296dd4d19b69b3d12769dff8321f1a99d0d91ca142ed4c9f5aa6805/allure_pytest_ext-2.13.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "52fd749b90a325206be4ed4a35ea3fdef603084814d6d3c6b086c83e77522892",
"md5": "b9ccdf297379f39e54b5ebbd4170f16c",
"sha256": "2b75df3e0b06112e93ec7bcfaeaa1f625123324f79e28bc15a34f2e91c32f23a"
},
"downloads": -1,
"filename": "allure_pytest_ext-2.13.4.tar.gz",
"has_sig": false,
"md5_digest": "b9ccdf297379f39e54b5ebbd4170f16c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.1",
"size": 15205,
"upload_time": "2025-08-22T17:55:28",
"upload_time_iso_8601": "2025-08-22T17:55:28.232187Z",
"url": "https://files.pythonhosted.org/packages/52/fd/749b90a325206be4ed4a35ea3fdef603084814d6d3c6b086c83e77522892/allure_pytest_ext-2.13.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-22 17:55:28",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "allure-pytest-ext"
}