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.
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.3.tar.gz
(34.8 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.3.tar.gz.
File metadata
- Download URL: pytest_chronicle-0.2.3.tar.gz
- Upload date:
- Size: 34.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7a0065c3d8c65982f9233c3d8ab4c187b1a6ac484018d4f91f90faa0a209413
|
|
| MD5 |
8031cd7cabf0c65ef471d9f845d18cc9
|
|
| BLAKE2b-256 |
89dc37b7fff58e50db6a8f43210391474e98399c5e92f900392867131ae10ae0
|
File details
Details for the file pytest_chronicle-0.2.3-py3-none-any.whl.
File metadata
- Download URL: pytest_chronicle-0.2.3-py3-none-any.whl
- Upload date:
- Size: 45.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7424716a9d59e4125988c74f66fa8d86871e05aff1c188e275691562811782f
|
|
| MD5 |
9b055b9c0423450a2ac157375e3dfe93
|
|
| BLAKE2b-256 |
5bfc894a6095ff38138193a087de6fe162a9dbaf60e0d036689b79434a7295ca
|