pytest-describe-beautifully
Beautiful terminal and HTML output for pytest-describe.
Transforms pytest-describe's nested test hierarchy into formatted, readable output with real-time results, tree summaries, and self-contained HTML reports.
Installation
pip install pytest-describe-beautifully
Requires Python 3.11+ and pytest-describe 2.0+.
Quick Start
# Enable beautiful terminal output
pytest --describe-beautifully
# Short form
pytest --db
# Generate an HTML report alongside terminal output
pytest --db --describe-html report.html
The plugin only activates when --describe-beautifully (or --db) is passed. Without it, pytest behaves as normal.
Terminal Output
With --db, test results print in real time as they complete, followed by a tree summary at the end:
Calculator
add
✓ it adds two numbers (3ms)
✓ it handles negatives (1ms)
divide
✓ it divides evenly (2ms)
✗ it raises on zero (1ms)
Summary
┌ Calculator (3/4 passed, 7ms)
├─┬ add (2/2 passed, 4ms)
│ ├── ✓ it adds two numbers (3ms)
│ └── ✓ it handles negatives (1ms)
└─┬ divide (1/2 passed, 3ms)
├── ✓ it divides evenly (2ms)
└── ✗ it raises on zero (1ms)
Outcome Symbols
| Symbol | Meaning |
|---|---|
| ✓ | Passed |
| ✗ | Failed |
| ○ | Skipped |
| ⊘ | Expected failure (xfail) |
| ✗! | Unexpected pass (xpass) |
| ☠ | Error (setup/teardown) |
Slow Test Markers
Tests exceeding the slow threshold get a ⏱ marker:
# Default threshold is 0.5s
pytest --db --describe-slow 1.0
Expanded Mode
Show docstrings and fixtures inline:
pytest --db --describe-expand-all
Calculator
add
✓ it adds two numbers (3ms)
Verifies basic addition of positive integers
🔧 calculator, sample_data
Hide fixtures while keeping docstrings:
pytest --db --describe-expand-all --describe-no-fixtures
HTML Reports
Generate a self-contained HTML file with no external dependencies:
pytest --db --describe-html report.html
The report includes:
- Summary badges -- total tests, passed, failed, skipped, and duration
- Collapsible describe blocks -- click to expand/collapse, blocks with failures open automatically
- Interactive controls -- Expand All, Collapse All, and Show Failed Only
- Test details -- outcome, duration, docstrings, fixtures, and full failure tracebacks
- Dark theme with semantic color coding
All CLI Options
| Flag | Default | Description |
|---|---|---|
--describe-beautifully / --db |
off | Enable the plugin |
--describe-slow SECONDS |
0.5 | Slow test threshold |
--describe-expand-all |
off | Show docstrings and fixtures inline |
--describe-no-fixtures |
off | Hide fixtures in expanded mode |
--describe-html PATH |
-- | Generate an HTML report at PATH |
Name Formatting
The plugin humanizes pytest-describe's naming conventions:
describe_MyClassbecomes MyClass (CamelCase preserved)describe_my_featurebecomes my featureit_does_somethingbecomes it does somethingthey_are_equalbecomes they are equal
Development
# Install in development mode
pip install -e ".[dev]"
# Run tests (100% branch coverage enforced)
python -m pytest
# Lint and format
python -m ruff check src/ tests/
python -m ruff format src/ tests/
# Mutation testing
mutmut run
License
MIT
Metadata
Release files for pytest-describe-beautifully 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_describe_beautifully-0.1.0.tar.gz | 29.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytest_describe_beautifully-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.3 kB
Release files / pytest_describe_beautifully-0.1.0.tar.gz
| Download URL | pytest_describe_beautifully-0.1.0.tar.gz |
|---|---|
| Size | 29.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f6e4ff38ab848bda6ab3bdd3ed610aed144530f51878ea8f9aaa5b08eddc3a8e
|
|
BLAKE2b-256 checksum How to use checksums |
cc6fb23e764ecf21d334b426d9e91e0dba827d7fb1db97c124d645fca928b498
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Jan 28, 2026.
Transparency logRelease files / pytest_describe_beautifully-0.1.0-py3-none-any.whl
| Download URL | pytest_describe_beautifully-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ca709cffd76315be0f11f524bf303d16f287fb3e2afc783075f9e1c0aa962a79
|
|
BLAKE2b-256 checksum How to use checksums |
a82c23949819517799c37940810295736fca9e5399359dc35e4d1bed1c5d68e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Jan 28, 2026.
Transparency log