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