Skip to main content

Compute the maximum coverage available through pytest with the minimum execution time cost

Project description

Overview

THIS PLUGIN IS IN DEVELOPMENT -- Expect bugs. Expect incomplete behaviour

pytest-maxcov is a pytest plugin to compute the maximum coverage available through pytest with the minimum execution time cost. The plugin serves two main use cases:

  • to identify redundant unit tests which do not add additional coverage
  • to discover a subset of unit tests which achieves a minimum coverage level, for example to create a fast subset for a smoke test

PyPI version

Installation

python3 -m pip install pytest-maxcov

Usage

The plugin works in two passes:

  1. Run alongside pytest-cov to collect coverage information and time every test. Pass --maxcov-record on the command-line to pytest to configure the plugin to capture the data it needs for the second pass. You must also include --cov-context=text to that per-test coverage can be measured.
  2. Run using --maxcov to read the data from pass one to mark tests as skipped if they are not needed to achieve the chosen coverage level.

The command-line option --maxcov-threshold specifies the threshold for computing the minimum set of tests. By default this is 100%.

For example using Poetry and pytest-xdist:

poetry run pytest -n logical --maxcov-record --cov=mypackage --cov-branch --cov-context=test
poetry run pytest -n logical --maxcov --cov=mypackage --cov-branch

Limitations

Current limitations include:

  • multiple contexts are not supported; the plugin assumes everything runs in a single context
  • multiple coverage files are not supported; the plugin reads from .coverage by default or the data file specified by the environment variable COVERAGE_FILE

License

All code in this repository is licensed under the MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_maxcov-1.0.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_maxcov-1.0.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file pytest_maxcov-1.0.0.tar.gz.

File metadata

  • Download URL: pytest_maxcov-1.0.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.3 Darwin/23.0.0

File hashes

Hashes for pytest_maxcov-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2f00ecfe2f1a5f65da54c8b12ffc0baf2e28cfa2c5f8a3bf636d16b901434976
MD5 bd18cc7c4e1fc801001ce11636fe676f
BLAKE2b-256 69cf87056dde14acfab5e83abeecaad0adb166915f78c4986c96f3f6f592dd63

See more details on using hashes here.

File details

Details for the file pytest_maxcov-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_maxcov-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.3 Darwin/23.0.0

File hashes

Hashes for pytest_maxcov-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a95e0d76d6bb50e930004e2786976e562c31d690cb24a6464e98cf98e85e3cb6
MD5 021c33be4df9141fec945c516d21d8a6
BLAKE2b-256 ee4c9e5bc71cddea4fead43e442a04ebee6df28bae7d2432128d31a113f55180

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page