Exclude durations that are 0.00 seconds long.
This commit is contained in:
		
							parent
							
								
									66609665f2
								
							
						
					
					
						commit
						fc11b81005
					
				|  | @ -0,0 +1 @@ | ||||||
|  | Exclude 0.00 second entries from ``--duration`` output. | ||||||
|  | @ -30,6 +30,7 @@ def pytest_addoption(parser): | ||||||
| 
 | 
 | ||||||
| def pytest_terminal_summary(terminalreporter): | def pytest_terminal_summary(terminalreporter): | ||||||
|     durations = terminalreporter.config.option.durations |     durations = terminalreporter.config.option.durations | ||||||
|  |     verbose = terminalreporter.config.getvalue("verbose") | ||||||
|     if durations is None: |     if durations is None: | ||||||
|         return |         return | ||||||
|     tr = terminalreporter |     tr = terminalreporter | ||||||
|  | @ -49,6 +50,8 @@ def pytest_terminal_summary(terminalreporter): | ||||||
|         dlist = dlist[:durations] |         dlist = dlist[:durations] | ||||||
| 
 | 
 | ||||||
|     for rep in dlist: |     for rep in dlist: | ||||||
|  |         if verbose < 2 and rep.duration < 0.01: | ||||||
|  |             break | ||||||
|         nodeid = rep.nodeid.replace("::()::", "::") |         nodeid = rep.nodeid.replace("::()::", "::") | ||||||
|         tr.write_line("%02.2fs %-8s %s" % (rep.duration, rep.when, nodeid)) |         tr.write_line("%02.2fs %-8s %s" % (rep.duration, rep.when, nodeid)) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -816,7 +816,7 @@ class TestDurations(object): | ||||||
|         result = testdir.runpytest("--durations=10") |         result = testdir.runpytest("--durations=10") | ||||||
|         assert result.ret == 0 |         assert result.ret == 0 | ||||||
|         result.stdout.fnmatch_lines_random( |         result.stdout.fnmatch_lines_random( | ||||||
|             ["*durations*", "*call*test_3*", "*call*test_2*", "*call*test_1*"] |             ["*durations*", "*call*test_3*", "*call*test_2*"] | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|     def test_calls_show_2(self, testdir): |     def test_calls_show_2(self, testdir): | ||||||
|  | @ -830,6 +830,18 @@ class TestDurations(object): | ||||||
|         testdir.makepyfile(self.source) |         testdir.makepyfile(self.source) | ||||||
|         result = testdir.runpytest("--durations=0") |         result = testdir.runpytest("--durations=0") | ||||||
|         assert result.ret == 0 |         assert result.ret == 0 | ||||||
|  |         for x in "23": | ||||||
|  |             for y in ("call",):  # 'setup', 'call', 'teardown': | ||||||
|  |                 for line in result.stdout.lines: | ||||||
|  |                     if ("test_%s" % x) in line and y in line: | ||||||
|  |                         break | ||||||
|  |                 else: | ||||||
|  |                     raise AssertionError("not found {} {}".format(x, y)) | ||||||
|  | 
 | ||||||
|  |     def test_calls_showall_verbose(self, testdir): | ||||||
|  |         testdir.makepyfile(self.source) | ||||||
|  |         result = testdir.runpytest("--durations=0", "-vv") | ||||||
|  |         assert result.ret == 0 | ||||||
|         for x in "123": |         for x in "123": | ||||||
|             for y in ("call",):  # 'setup', 'call', 'teardown': |             for y in ("call",):  # 'setup', 'call', 'teardown': | ||||||
|                 for line in result.stdout.lines: |                 for line in result.stdout.lines: | ||||||
|  | @ -840,9 +852,9 @@ class TestDurations(object): | ||||||
| 
 | 
 | ||||||
|     def test_with_deselected(self, testdir): |     def test_with_deselected(self, testdir): | ||||||
|         testdir.makepyfile(self.source) |         testdir.makepyfile(self.source) | ||||||
|         result = testdir.runpytest("--durations=2", "-k test_1") |         result = testdir.runpytest("--durations=2", "-k test_2") | ||||||
|         assert result.ret == 0 |         assert result.ret == 0 | ||||||
|         result.stdout.fnmatch_lines(["*durations*", "*call*test_1*"]) |         result.stdout.fnmatch_lines(["*durations*", "*call*test_2*"]) | ||||||
| 
 | 
 | ||||||
|     def test_with_failing_collection(self, testdir): |     def test_with_failing_collection(self, testdir): | ||||||
|         testdir.makepyfile(self.source) |         testdir.makepyfile(self.source) | ||||||
|  | @ -862,13 +874,15 @@ class TestDurations(object): | ||||||
| 
 | 
 | ||||||
| class TestDurationWithFixture(object): | class TestDurationWithFixture(object): | ||||||
|     source = """ |     source = """ | ||||||
|  |         import pytest | ||||||
|         import time |         import time | ||||||
|         frag = 0.001 |         frag = 0.01 | ||||||
|         def setup_function(func): | 
 | ||||||
|             time.sleep(frag * 3) |         @pytest.fixture | ||||||
|         def test_1(): |         def setup_fixt(): | ||||||
|             time.sleep(frag*2) |             time.sleep(frag) | ||||||
|         def test_2(): | 
 | ||||||
|  |         def test_1(setup_fixt): | ||||||
|             time.sleep(frag) |             time.sleep(frag) | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue