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 | ||||
| ------------------------------------- | ||||
| 
 | ||||
| .. 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: | ||||
|  |  | |||
|  | @ -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)) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue