Skip to main content

pytest-failure-tracker

img

A pytest plugin for tracking test failures over multiple test runs, making it easier to identify flaky tests and frequently failing tests.

Installation

You can install pytest-failure-tracker via pip:

pip install pytest-failure-tracker

Usage

To use the plugin, simply run pytest with the --track-failures option:

pytest --track-failures

This will enable failure tracking for your test suite.

Features

Failure Tracking

The plugin tracks the following information for each test:

  • Number of passes
  • Number of failures
  • Number of skips
  • Timestamp of the last failure
  • Traceback of the last failure

This data is stored in a JSON file (test_results.json) in your project directory.

Summary Report

After each test run with --track-failures enabled, the plugin will display a summary report in the terminal. This report includes:

  • Total number of runs for each test
  • Number of passes, failures, and skips
  • Failure rate
  • Timestamp of the last failure
  • Traceback of the last failure

Persistent Storage

Test results are stored persistently, allowing you to track failures across multiple test runs and even across different sessions.

Example Output

============================= Test Failure Tracking Summary =============================
test_module.py::test_example:
  Total runs: 10
  Passes: 8
  Failures: 2
  Skips: 0
  Failure rate: 20.00%
  Last failure: 2024-07-16T14:30:00.123456
  Last failure traceback:
    File "test_module.py", line 15, in test_example
      assert False, "This test intentionally fails sometimes"
    AssertionError: This test intentionally fails sometimes

test_module.py::test_another_example:
  Total runs: 10
  Passes: 10
  Failures: 0
  Skips: 0
  Failure rate: 0.00%

Configuration

Currently, the plugin doesn't require any additional configuration beyond the --track-failures command-line option.

Limitations and Considerations

  • The plugin treats parameterized tests as separate tests.
  • There is currently no built-in way to reset or clear the tracking data. You can manually delete the test_results.json file to reset.
  • The plugin doesn't currently provide trend analysis over time.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT © Krystian Safjan.

TODO: expand documentation with:

  1. More detailed examples of how to interpret the results
  2. Any known issues or edge cases
  3. A section on how to configure the plugin if you add any configuration options in the future
  4. A more detailed contribution guide if you want to encourage open-source contributions
  5. A changelog to track versions and updates

Release files for pytest-failure-tracker 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-failure-tracker 0.2.3
File Size Uploaded
pytest_failure_tracker-0.2.3.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-failure-tracker 0.2.3
File Interpreter ABI Platform
pytest_failure_tracker-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 15.7 kB

Release files / pytest_failure_tracker-0.2.3.tar.gz

Download URL pytest_failure_tracker-0.2.3.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d8b22f29094d1e7d3fc8cb2a21c31146fba065acc1358e888d452ac5c3c9bd0d
BLAKE2b-256 checksum
How to use checksums
d1c3fb29102156736bf03dea4d6e2264fc42a762a0c6f1f28e97c513da25f0c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release files / pytest_failure_tracker-0.2.3-py3-none-any.whl

Download URL pytest_failure_tracker-0.2.3-py3-none-any.whl
Size 5.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fbecb7462e2b20e2e26055bd05996407f22247be3e7e85483b7ae6e86860f57f
BLAKE2b-256 checksum
How to use checksums
872486565c43455678246692af56c5e5d0699691e1004fab40dbd1b0755c279c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page