Make min duration configurable for slowest tests (#7667)
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
This commit is contained in:
parent
54f7a87ea8
commit
1df2471f17
|
@ -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``.
|
|
@ -426,14 +426,15 @@ Pytest supports the use of ``breakpoint()`` with the following behaviours:
|
||||||
Profiling test execution duration
|
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
|
.. 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:
|
.. _faulthandler:
|
||||||
|
|
|
@ -52,10 +52,19 @@ def pytest_addoption(parser: Parser) -> None:
|
||||||
metavar="N",
|
metavar="N",
|
||||||
help="show N slowest setup/test durations (N=0 for all).",
|
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:
|
def pytest_terminal_summary(terminalreporter: "TerminalReporter") -> None:
|
||||||
durations = terminalreporter.config.option.durations
|
durations = terminalreporter.config.option.durations
|
||||||
|
durations_min = terminalreporter.config.option.durations_min
|
||||||
verbose = terminalreporter.config.getvalue("verbose")
|
verbose = terminalreporter.config.getvalue("verbose")
|
||||||
if durations is None:
|
if durations is None:
|
||||||
return
|
return
|
||||||
|
@ -76,11 +85,11 @@ def pytest_terminal_summary(terminalreporter: "TerminalReporter") -> None:
|
||||||
dlist = dlist[:durations]
|
dlist = dlist[:durations]
|
||||||
|
|
||||||
for i, rep in enumerate(dlist):
|
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("")
|
||||||
tr.write_line(
|
tr.write_line(
|
||||||
"(%s durations < 0.005s hidden. Use -vv to show these durations.)"
|
"(%s durations < %gs hidden. Use -vv to show these durations.)"
|
||||||
% (len(dlist) - i)
|
% (len(dlist) - i, durations_min)
|
||||||
)
|
)
|
||||||
break
|
break
|
||||||
tr.write_line("{:02.2f}s {:<8} {}".format(rep.duration, rep.when, rep.nodeid))
|
tr.write_line("{:02.2f}s {:<8} {}".format(rep.duration, rep.when, rep.nodeid))
|
||||||
|
|
Loading…
Reference in New Issue