Skip to main content

Fail tests that take too long to run

Project description

Project Status: Active — The project has reached a stable, usable state and is being actively developed. CI Status https://codecov.io/gh/jwodder/pytest-fail-slow/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/pytest-fail-slow.svg Conda Version MIT License

GitHub | PyPI | Issues | Changelog

pytest-fail-slow is a pytest plugin for making tests fail that take too long to run. It adds a --fail-slow DURATION command-line option to pytest that causes any & all otherwise-passing tests that run for longer than the given duration to be marked as failures, and it adds a @pytest.mark.fail_slow(DURATION) marker for making an individual test fail if it runs for longer than the given duration. If --fail-slow is given and a test has the @fail_slow() marker, the duration given by the marker takes precedence for that test.

Note that slow tests will still be run to completion; if you want them to instead be stopped early, use pytest-timeout.

A duration can be supplied to the --fail-slow option as either a bare floating-point number of seconds or as a floating-point number followed by one of the following units (case insensitive):

  • h, hour, hours

  • m, min, mins, minute, minutes

  • s, sec, secs, second, seconds

  • ms, milli, millisec, milliseconds

  • us, μs, micro, microsec, microseconds

Durations passed to the @pytest.mark.fail_slow() marker can be either ints/floats (for a number of seconds) or strings in the same format as passed to --fail-slow.

If pytest-fail-slow marks a test as a failure, the output will include the test’s duration and the duration threshold, like so:

________________________________ test_func ________________________________
Test passed but took too long to run: Duration 123.0s > 5.0s

Note: Only the durations for tests themselves are taken into consideration. If a test passes in less than the specified duration, but one or more fixture setups/teardowns take longer than the duration, the test will still be marked as passing.

Installation

pytest-fail-slow requires Python 3.6 or higher and pytest 6.0 or higher. Just use pip for Python 3 (You have pip, right?) to install it:

python3 -m pip install pytest-fail-slow

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-fail-slow-0.3.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

pytest_fail_slow-0.3.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file pytest-fail-slow-0.3.0.tar.gz.

File metadata

  • Download URL: pytest-fail-slow-0.3.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for pytest-fail-slow-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bc022f3f4f170b7e3e7d4dff45bd9e7855e4935ae396bb40b4521ce1ef8ea41c
MD5 9cb78b16d33950c51187568a085532aa
BLAKE2b-256 71c614cc27d99e7b5e77e82c4b7459309978546c4e0351ed75f8992b640f3db7

See more details on using hashes here.

File details

Details for the file pytest_fail_slow-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_fail_slow-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf8b57a90d13f8f694ad8250c6d2e869714422c5d7f3c2d6541bec7d1706f783
MD5 babd754ee90e5ffc468261d215ab7caf
BLAKE2b-256 a2bb275f32982bd4f7a5c52639a1cb9571f0716d1b50647e607beb88769d9ff3

See more details on using hashes here.

Supported by

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