Fix: Add skip marker results to report (#636)

This commit is contained in:
Jim Brännlund 2023-04-08 18:18:10 +02:00 committed by GitHub
parent f1bd1ebbee
commit 89746e3203
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 80 additions and 5 deletions

View File

@ -84,7 +84,9 @@ class BaseReport:
self.update_test_log(report)
# passed "setup" and "teardown" are not added to the html
if report.when == "call" or _is_error(report):
if report.when == "call" or (
report.when in ["setup", "teardown"] and report.outcome != "passed"
):
if not remove_log:
processed_logs = _process_logs(report)
test_data["log"] = _handle_ansi(processed_logs)
@ -338,7 +340,7 @@ def _is_error(report):
def _process_logs(report):
log = []
if report.longreprtext:
log.append(report.longreprtext + "\n")
log.append(report.longreprtext.replace("<", "&lt;").replace(">", "&gt;") + "\n")
for section in report.sections:
header, content = section
log.append(f"{' ' + header + ' ':-^80}")

View File

@ -192,7 +192,40 @@ class TestHTML:
f"""
import pytest
def test_skip():
pytest.skip('{reason}')
pytest.skip("{reason}")
"""
)
page = run(pytester)
assert_results(page, skipped=1, total_tests=0)
log = get_text(page, ".summary div[class='log']")
assert_that(log).contains(reason)
def test_skip_function_marker(self, pytester):
reason = str(random.random())
pytester.makepyfile(
f"""
import pytest
@pytest.mark.skip(reason="{reason}")
def test_skip():
assert True
"""
)
page = run(pytester)
assert_results(page, skipped=1, total_tests=0)
log = get_text(page, ".summary div[class='log']")
assert_that(log).contains(reason)
def test_skip_class_marker(self, pytester):
reason = str(random.random())
pytester.makepyfile(
f"""
import pytest
@pytest.mark.skip(reason="{reason}")
class TestSkip:
def test_skip():
assert True
"""
)
page = run(pytester)
@ -216,20 +249,60 @@ class TestHTML:
f"""
import pytest
def test_xfail():
pytest.xfail('{reason}')
pytest.xfail("{reason}")
"""
)
page = run(pytester)
assert_results(page, xfailed=1)
assert_that(get_log(page)).contains(reason)
def test_xfail_function_marker(self, pytester):
reason = str(random.random())
pytester.makepyfile(
f"""
import pytest
@pytest.mark.xfail(reason="{reason}")
def test_xfail():
assert False
"""
)
page = run(pytester)
assert_results(page, xfailed=1)
assert_that(get_log(page)).contains(reason)
def test_xfail_class_marker(self, pytester):
pytester.makepyfile(
"""
import pytest
@pytest.mark.xfail(reason="broken")
class TestXFail:
def test_xfail(self):
assert False
"""
)
page = run(pytester)
assert_results(page, xfailed=1)
def test_xpass(self, pytester):
pytester.makepyfile(
"""
import pytest
@pytest.mark.xfail()
def test_xpass():
pass
assert True
"""
)
page = run(pytester)
assert_results(page, xpassed=1)
def test_xpass_class_marker(self, pytester):
pytester.makepyfile(
"""
import pytest
@pytest.mark.xfail()
class TestXPass:
def test_xpass(self):
assert True
"""
)
page = run(pytester)