Package: pytest-fail-slow
GitHub|PyPI|Issues|Changelogpytest-fail-slowis apytestplugin for treating tests as failed if they
took too long to run.  It adds markers for failing tests if they or their setup
stages run for longer than a given duration, along with command-line options
for applying the same cutoff to all tests.Note that slow tests will still be run to completion; if you want them to
instead be stopped early, usepytest-timeout.Installationpytest-fail-slowrequires Python 3.8 or higher and pytest 7.0 or higher.
Just usepipfor Python 3 (You have pip, right?) to
install it:python3 -m pip install pytest-fail-slowUsageFailing Slow TestsTo cause a specific test to fail if it takes too long to run, apply thefail_slowmarker to it, with the desired cutoff time as the argument:importpytest@pytest.mark.fail_slow("5s")deftest_something_sluggish():...In addition, the--fail-slowDURATIONoption can be passed to thepytestcommand to affect all tests in that run.  If--fail-slowis
given and a test has thefail_slowmarker, the duration given by the marker
takes precedence for that test.If a test fails due to being slow, pytest’s 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.0sNote:This feature only takes the durations for tests themselves 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.  To fail a test if the setup takes too long, see
below.Failing Slow SetupsNew in version 0.4.0To cause a specific test to fail if the setup steps for all of its fixtures
combined take too long to run, apply thefail_slow_setupmarker to it, with
the desired cutoff time as the argument:importpytest@pytest.mark.fail_slow_setup("5s")deftest_costly_resource(slow_to_create):...Do not apply the marker to the test’s fixtures; markers have no effect on
fixtures.In addition, the--fail-slow-setupDURATIONoption can be passed to thepytestcommand to affect all tests in that run.  If--fail-slow-setupis given and a test has thefail_slow_setupmarker, the duration given by
the marker takes precedence for that test.If the setup for a test takes too long to run, the test will be marked as
“errored,” the test itself will not be run, and pytest’s output will include
the setup stage’s duration and the duration threshold, like so:_______________________ ERROR at setup of test_func _______________________
Setup passed but took too long to run: Duration 123.0s > 5.0sNote:If a test depends on multiple fixtures and just one of them exceeds
the given duration on its own, the remaining fixtures will still have their
setup steps run.  Also, all fixture teardowns will still be run after the test
would have run.Specifying DurationsA duration passed to a marker or command-line option can be either a bare
number of seconds or else a floating-point number followed by one of the
following units (case insensitive):h,hour,hoursm,min,mins,minute,minutess,sec,secs,second,secondsms,milli,millisec,millisecondsus,μs,micro,microsec,microseconds