tap.py
Test Anything Protocol (TAP) tools
What it is and what it does
tap.py is a library and command-line tool for working with the Test Anything Protocol, a human-readable format for recording and exchanging test results. It lets you parse TAP streams and files, generate TAP output from test runs, and integrate TAP reporting into unittest and other test frameworks. The package includes a Parser API for programmatic access, a Loader for reading TAP files, and a command-line consumer (tappy or tap) for inspecting TAP streams from STDIN or files.
The library has no runtime dependencies, making it lightweight to install. It supports TAP version 13 and can handle YAML diagnostic blocks. It's primarily used to standardize test output across different test runners and to enable CI/CD systems to consume test results in a portable, language-agnostic format.
Use it for:
- Parse TAP output from test runs to extract and report test results programmatically in CI/CD pipelines.
- Generate TAP-formatted test reports from unittest test suites using TAPTestRunner.
- Integrate TAP output into build systems that expect standardized test result formats.
- Consume TAP streams from STDIN or files to validate or aggregate test data across multiple test runners.
- Add TAP version 13 compliance to existing test infrastructure by wrapping test output.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides tools to parse, generate, and work with Test Anything Protocol (TAP) output—a standardized line-based format for recording test results.
Yes, if you need to work with TAP-formatted test data or integrate TAP reporting into a test framework. The package is stable, has no dependencies, and supports current Python versions. However, the 565-day gap since the last release suggests limited active maintenance; install it for TAP interoperability, but do not expect rapid bug fixes or feature additions.
Install
tap-py on PyPI
pip
pip install tap-pyuv
uv add tap-pypoetry
poetry add tap-pyInstalling tap.py
Before you install
Low install friction with no runtime dependencies. Maintenance is dormant—last release was 565 days ago—but the package is marked Production/Stable and supports current Python versions (3.9 through 3.13).
License in practice
BSD permissive license allows commercial and private use with minimal restrictions.
Quickstart
pip install tap.py
from tap import Parser
parser = Parser()
with open('test.tap') as f:
plan = parser.parse_file(f)
Requires Python 3.9 or later.
Verify before relying
- Whether the dormant maintenance status (565 days since last release) affects bug-fix responsiveness or compatibility with emerging test frameworks.
- Whether YAML block support (mentioned in version history) is available by default or requires optional installation.
Package facts
| License | BSD (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | dormant — 565 days since the last release |
| First released | |
| Downloads | 223,981/month — #9,236 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: tap_py-3.2.1-py3-none-any.whl
Keywords: TAP, 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
pytest-tappytest-tap outputs test results in Test…
permissive · top 15,000 on PyPI
singer-sdkBuilds Singer-compliant data extraction taps…
permissive · top 5,000 on PyPI
typed-argument-parserA typed, modern replacement for Python's…
permissive · top 15,000 on PyPI
pynosepynose is an updated test runner that extends…
copyleft · top 5,000 on PyPI
html-testRunnerA unittest test runner that generates…
permissive · top 15,000 on PyPI
argparseProvides command-line argument parsing for…
permissive · top 1,000 on PyPI
placeboPlacebo records and replays AWS API calls…
permissive · top 15,000 on PyPI
teamcity-messagesSends test results and build status from Python…
permissive · top 15,000 on PyPI
snapshottestSnapshot testing library that captures API…
permissive · top 15,000 on PyPI
os-testros-testr wraps the testr test runner to provide…
permissive · top 15,000 on PyPI