Make min duration configurable for slowest tests (#7667)

Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
This commit is contained in:
Sorin Sbarnea 2020-09-05 13:18:29 +01:00 committed by GitHub
parent 54f7a87ea8
commit 1df2471f17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 6 deletions

View File

@ -0,0 +1 @@
New ``--durations-min`` command-line flag controls the minimal duration for inclusion in the slowest list of tests shown by ``--durations``. Previously this was hard-coded to ``0.005s``.

View File

@ -426,14 +426,15 @@ Pytest supports the use of ``breakpoint()`` with the following behaviours:
Profiling test execution duration
-------------------------------------
.. versionchanged:: 6.0
To get a list of the slowest 10 test durations:
To get a list of the slowest 10 test durations over 1.0s long:
.. code-block:: bash
pytest --durations=10
pytest --durations=10 --durations-min=1.0
By default, pytest will not show test durations that are too small (<0.01s) unless ``-vv`` is passed on the command-line.
By default, pytest will not show test durations that are too small (<0.005s) unless ``-vv`` is passed on the command-line.
.. _faulthandler:

View File

@ -52,10 +52,19 @@ def pytest_addoption(parser: Parser) -> None:
metavar="N",
help="show N slowest setup/test durations (N=0 for all).",
)
group.addoption(
"--durations-min",
action="store",
type=float,
default=0.005,
metavar="N",
help="Minimal duration in seconds for inclusion in slowest list. Default 0.005",
)
def pytest_terminal_summary(terminalreporter: "TerminalReporter") -> None:
durations = terminalreporter.config.option.durations
durations_min = terminalreporter.config.option.durations_min
verbose = terminalreporter.config.getvalue("verbose")
if durations is None:
return
@ -76,11 +85,11 @@ def pytest_terminal_summary(terminalreporter: "TerminalReporter") -> None:
dlist = dlist[:durations]
for i, rep in enumerate(dlist):
if verbose < 2 and rep.duration < 0.005:
if verbose < 2 and rep.duration < durations_min:
tr.write_line("")
tr.write_line(
"(%s durations < 0.005s hidden. Use -vv to show these durations.)"
% (len(dlist) - i)
"(%s durations < %gs hidden. Use -vv to show these durations.)"
% (len(dlist) - i, durations_min)
)
break
tr.write_line("{:02.2f}s {:<8} {}".format(rep.duration, rep.when, rep.nodeid))