Exclude durations that are 0.00 seconds long.

This commit is contained in:
Jeffrey Rackauckas 2018-10-07 19:19:48 -07:00
parent 66609665f2
commit fc11b81005
3 changed files with 27 additions and 9 deletions

View File

@ -0,0 +1 @@
Exclude 0.00 second entries from ``--duration`` output.

View File

@ -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))

View File

@ -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)
""" """