Reusable pytest results ingestion tooling with database export and CLI helpers.
Project description
pytest-chronicle
Traceable pytest history: capture results, ingest into SQLite or Postgres, and answer “when did this test last go red?” or “which commit flipped it green?”.
What it does
- Pytest plugin emits per-test JSONL records (stdout/stderr/traceback included).
- Ingestion stamps runs with git/CI metadata and writes to SQLite or Postgres.
- CLI queries last failures, error details, flip-to-green commits, and branch/commit diffs with pytest-like selectors.
Install
uv pip install pytest-chronicle
Quickstart
pytest-chronicle init --project my-project --suite pytest # create config + local sqlite
pytest -q # auto-ingests using config/env/fallback SQLite
pytest-chronicle query last-red --format json --pretty # ask questions
Common commands
pytest-chronicle init– scaffold.pytest-chronicle.tomland an async SQLite DB.pytest-chronicle ingest --jsonl <path>– ingest JSONL/summary artifacts.pytest-chronicle query last-red|errors|flipped-green|compare– history lookups (-k/-mlike pytest).pytest-chronicle query timeline– colored TTY timeline of recent runs for matching tests.pytest-chronicle run <project> -- <pytest args>– run pytest underuv, collect artifacts, optionally ingest.pytest-chronicle backfill– ingest many summary.json files.pytest-chronicle export-sqlite/import-sqlite– migrate between backends.pytest-chronicle db upgrade– apply Alembic migrations.pytest-chronicle config show|set– view or set repo defaults.
Configuration & defaults
- Precedence: CLI flag
--database-url> env (PYTEST_RESULTS_DB_URL, legacyTEST_RESULTS_DATABASE_URL/SCS_DATABASE_URL) >.pytest-chronicle.toml> fallback SQLite at<repo>/.pytest-chronicle/chronicle.db(async). - Example config:
[chronicle] database_url = "postgresql+asyncpg://user:pass@host/db" project = "my-project" suite = "pytest"
- Typical flow: use SQLite for local dev (via
init); point env or config at Postgres for CI/prod. No other changes needed. - If you skip
--projectduringinit, it is auto-detected frompyproject.toml(or the current folder name); the CLI tells you how to change it later.
Pytest plugin (auto ingestion)
- Install the package; the
pytest_chronicleplugin is auto-discovered. - If a database is configured via env/config (or fallback SQLite), the plugin will ingest automatically at session end. You can still pass
--chronicle-db <url>to override, or--chronicle-no-ingestto skip. - Default JSONL path:
.artifacts/test-results/chronicle-results.jsonl(created automatically).
More docs
- Detailed guide:
docs/guide.md - Backend abstraction:
docs/storage-backends.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pytest_chronicle-0.2.4.tar.gz
(35.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_chronicle-0.2.4.tar.gz.
File metadata
- Download URL: pytest_chronicle-0.2.4.tar.gz
- Upload date:
- Size: 35.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19ccb3064a61bcc6c7fa0767fc134f0e580313ba85b06ffd55ec04aa9e35dfcd
|
|
| MD5 |
1d28cdb7f6e963b0ef1d94e1cde36846
|
|
| BLAKE2b-256 |
f5181021989544dd1c0cfc9bceb68bf5a4050686c6fecdabd290b64025205381
|
File details
Details for the file pytest_chronicle-0.2.4-py3-none-any.whl.
File metadata
- Download URL: pytest_chronicle-0.2.4-py3-none-any.whl
- Upload date:
- Size: 45.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d61b58658cb7b9ff87f8a8bed59e15bf23ad9ebbff9a03dbb651cf8f03d8b051
|
|
| MD5 |
909b46cffecef4254db8a589e93a7bfb
|
|
| BLAKE2b-256 |
11e2f977d5c55039860940276ca1c5bf84a9a40ab14abc539831fb24f1f32189
|