Report collection errors in HTML report. (#154)

Fixes #148
This commit is contained in:
Dave Hunt 2018-04-05 11:31:56 +01:00 committed by GitHub
parent d5031769b6
commit ebebda43dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 2 deletions

View File

@ -96,7 +96,7 @@ class HTMLReport(object):
def __init__(self, outcome, report, logfile, config):
self.test_id = report.nodeid
if report.when != 'call':
if getattr(report, 'when', 'call') != 'call':
self.test_id = '::'.join([report.nodeid, report.when])
self.time = getattr(report, 'duration', 0.0)
self.outcome = outcome
@ -277,7 +277,7 @@ class HTMLReport(object):
self._appendrow('Passed', report)
def append_failed(self, report):
if report.when == "call":
if getattr(report, 'when', None) == "call":
if hasattr(report, "wasxfail"):
# pytest < 3.0 marked xpasses as failures
self.xpassed += 1
@ -487,6 +487,10 @@ class HTMLReport(object):
else:
self.append_other(report)
def pytest_collectreport(self, report):
if report.failed:
self.append_failed(report)
def pytest_sessionstart(self, session):
self.suite_start_time = time.time()

View File

@ -616,3 +616,14 @@ class TestHTML:
result, html = run(testdir, 'report.html', '--self-contained-html')
assert result.ret
assert 'utf8 longrepr' in html
def test_collect_error(self, testdir):
testdir.makepyfile("""
import xyz
def test_pass(): pass
""")
result, html = run(testdir)
assert result.ret
assert_results(html, tests=0, passed=0, errors=1)
regex_error = '(Import|ModuleNotFound)Error: No module named .*xyz'
assert re.search(regex_error, html) is not None