Show deselection count before tests are exectued

Fixes #1527
This commit is contained in:
Thomas Hisch 2018-02-13 14:46:11 +01:00
parent 063e2da967
commit 6496131b79
4 changed files with 32 additions and 8 deletions

View File

@ -361,6 +361,7 @@ class TerminalReporter(object):
errors = len(self.stats.get('error', []))
skipped = len(self.stats.get('skipped', []))
deselected = len(self.stats.get('deselected', []))
if final:
line = "collected "
else:
@ -368,6 +369,8 @@ class TerminalReporter(object):
line += str(self._numcollected) + " item" + ('' if self._numcollected == 1 else 's')
if errors:
line += " / %d errors" % errors
if deselected:
line += " / %d deselected" % deselected
if skipped:
line += " / %d skipped" % skipped
if self.isatty:
@ -377,6 +380,7 @@ class TerminalReporter(object):
else:
self.write_line(line)
@pytest.hookimpl(trylast=True)
def pytest_collection_modifyitems(self):
self.report_collect(True)
@ -484,7 +488,6 @@ class TerminalReporter(object):
if exitstatus == EXIT_INTERRUPTED:
self._report_keyboardinterrupt()
del self._keyboardinterrupt_memo
self.summary_deselected()
self.summary_stats()
def pytest_keyboard_interrupt(self, excinfo):
@ -649,11 +652,6 @@ class TerminalReporter(object):
if self.verbosity == -1:
self.write_line(msg, **markup)
def summary_deselected(self):
if 'deselected' in self.stats:
self.write_sep("=", "%d tests deselected" % (
len(self.stats['deselected'])), bold=True)
def repr_pythonversion(v=None):
if v is None:

1
changelog/3213.feature Normal file
View File

@ -0,0 +1 @@
Output item deselection count before tests are run.

View File

@ -361,7 +361,7 @@ class TestLastFailed(object):
result = testdir.runpytest('--lf')
result.stdout.fnmatch_lines([
'collected 4 items',
'collected 4 items / 2 deselected',
'run-last-failure: rerun previous 2 failures',
'*2 failed, 2 deselected in*',
])

View File

@ -431,11 +431,36 @@ class TestTerminalFunctional(object):
)
result = testdir.runpytest("-k", "test_two:", testpath)
result.stdout.fnmatch_lines([
"collected 3 items / 1 deselected",
"*test_deselected.py ..*",
"=* 1 test*deselected *=",
])
assert result.ret == 0
def test_show_deselected_items_using_markexpr_before_test_execution(
self, testdir):
testdir.makepyfile("""
import pytest
@pytest.mark.foo
def test_foobar():
pass
@pytest.mark.bar
def test_bar():
pass
def test_pass():
pass
""")
result = testdir.runpytest('-m', 'not foo')
result.stdout.fnmatch_lines([
"collected 3 items / 1 deselected",
"*test_show_des*.py ..*",
"*= 2 passed, 1 deselected in * =*",
])
assert "= 1 deselected =" not in result.stdout.str()
assert result.ret == 0
def test_no_skip_summary_if_failure(self, testdir):
testdir.makepyfile("""
import pytest