plaintest
A pytest plugin and CLI tool for managing plain-text test cases with Markdown documentation.
Overview
plaintest helps you bridge the gap between human-readable test case documentation and automated tests.
Write your test cases in simple Markdown files, link them to pytest tests using decorators,
and generate HTML reports showing test coverage and results.
Rationale
Many teams struggle with test documentation scattered across multiple systems: requirements in Jira, test cases in TestRail, implementation details in code comments. This fragmentation makes it hard to understand what's being tested and why. By keeping test cases as Markdown files in your repository alongside your code, you maintain a single source of truth that's version-controlled, code-review friendly, and easily accessible to both humans and LLMs.
Changes to test specifications go through the same PR process as code changes, ensuring consistency and traceability.
Installation
pip install plaintest
Or with uv:
uv add plaintest
Quick Start
- Initialize your test cases directory:
plaintest init
- Create a test case:
plaintest add "User login functionality"
This creates a Markdown file like test-cases/001/case.md:
---
title: User login functionality
tags: []
---
## Steps
## Expected
Tip: Create a .template file in your test cases directory to customize the template using Jinja2 syntax.
- Link a pytest test to the test case:
import pytest
@pytest.mark.tc("001")
def test_user_login():
# Your test implementation
assert True
- Generate a coverage report:
plaintest coverage
Configuration
Add configuration to your pyproject.toml:
[tool.plaintest]
test_cases_dir = "test-cases"
Commands
plaintest init- Initialize test cases directoryplaintest add [TITLE]- Interactively add new test case(s)plaintest coverage- Generate terminal-based coverage reportplaintest report- Generate side-by-side HTML report
License
MIT
Metadata
Release files for plaintest 0.2.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 | |
|---|---|---|---|
| plaintest-0.2.0.tar.gz | 14.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plaintest-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.7 kB
Release files / plaintest-0.2.0.tar.gz
| Download URL | plaintest-0.2.0.tar.gz |
|---|---|
| Size | 14.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f42edb1d5e5c9e95042343b07d021402494e225626bd9d8595fd5c337872214d
|
|
BLAKE2b-256 checksum How to use checksums |
7298a214d7b495fc3730ffef98c11085f37a189f90ef299beaaeaf0ff486cfc3
|
| 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 Feb 8, 2026.
Transparency logRelease files / plaintest-0.2.0-py3-none-any.whl
| Download URL | plaintest-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8e9813c4d52336e3505f40034bf105d9072b653b486c2149c43e2e802d005b9
|
|
BLAKE2b-256 checksum How to use checksums |
64f45c1e66b2288bd9a3579b41e2b8bdd7ac10bc63c6644540bf45945df46d0a
|
| 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 Feb 8, 2026.
Transparency log