pytest-tap
Test Anything Protocol (TAP) reporting plugin for pytest
What it is and what it does
pytest-tap is a pytest plugin that converts test results into Test Anything Protocol (TAP) format, a line-based standard for recording test outcomes. Instead of pytest's default output, running pytest with the --tap flag produces TAP-compliant output that can be parsed by other tools and integrated into CI/CD pipelines or test aggregation systems.
The plugin handles pytest's test lifecycle—including setup failures, xfail/skip directives, and test capture (stdout, stderr, logs)—and translates it into TAP's simple format. It depends on pytest for test discovery and execution, and tap-py for TAP serialization. Recent releases added support for Python 3.12 and 3.13, and enhanced diagnostics output for failed tests.
Use it for:
- Export pytest results to TAP format for consumption by CI/CD systems or test aggregation tools that expect TAP input.
- Standardize test reporting across projects that mix pytest with other test frameworks that already output TAP.
- Generate machine-readable test logs that can be parsed and analyzed by downstream reporting or monitoring systems.
- Capture and display logs, stdout, and stderr for failed tests in TAP diagnostics using the --show-capture flag.
- Integrate pytest test results into test management or quality dashboards that consume TAP streams.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pytest-tap outputs test results in Test Anything Protocol (TAP) format, a standardized line-based protocol for recording and reporting test data across tools and environments.
Yes, if you need TAP output for CI/CD integration or test aggregation. The plugin is stable and has low friction, but maintenance is dormant—verify that TAP output format meets your downstream tool requirements before adopting. No known security issues.
Install
pytest-tap on PyPI
pip
pip install pytest-tapuv
uv add pytest-tappoetry
poetry add pytest-tapInstalling pytest-tap
Before you install
Low install friction with just two runtime dependencies (pytest and tap-py). Maintenance is dormant—last release was 561 days ago—but the package is marked Production/Stable and supports current Python versions (3.9–3.13).
License in practice
BSD license is permissive, allowing commercial and private use with minimal restrictions.
Quickstart
pip install pytest-tap
pytest --tap
Requires Python 3.9 or later.
Verify before relying
- Whether dormant maintenance status affects compatibility with future pytest releases.
- Whether TAP output format is compatible with downstream tools and CI/CD systems you use.
Package facts
| License | BSD (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — pytest, tap-py |
| Maintenance | dormant — 561 days since the last release |
| First released | |
| Downloads | 196,276/month — #9,789 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pytest_tap-3.5-py3-none-any.whl
Keywords: TAP, pytest, unittest
Tags
More Testing packages
Pluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
virtualenvvirtualenv creates isolated Python environments…
permissive · top 100 on PyPI
coverageCoverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
pytest-asynciopytest-asyncio is a pytest plugin that enables…
permissive · top 1,000 on PyPI
pytest-json-ctrfA pytest plugin that generates test reports in…
permissive · top 1,000 on PyPI
tap.pyProvides tools to parse, generate, and work…
permissive · top 15,000 on PyPI
teamcity-messagesSends test results and build status from Python…
permissive · top 15,000 on PyPI
pytest-runtime-xfailA pytest plugin that provides a `runtime_xfail`…
permissive · top 15,000 on PyPI
pytest-emojiAdds emoji indicators to pytest test result…
permissive · top 15,000 on PyPI
typed-argument-parserA typed, modern replacement for Python's…
permissive · top 15,000 on PyPI
pytest-catchlogA pytest plugin that automatically captures log…
permissive · top 15,000 on PyPI
pytest-checkA pytest plugin that allows tests to continue…
unclear · top 5,000 on PyPI
cov-corecov-core provides the internal plugin…
permissive · top 15,000 on PyPI
pytest-reportportalA pytest plugin that integrates test execution…
permissive · top 5,000 on PyPI
pyvalidpyvalid is a Python data validation tool that…
permissive · top 15,000 on PyPI