Skip to content

Commit 3ffb204

Browse files
authored
now XFAIL messages contains reason same as XPASS (via allure-framework#519)
1 parent 8df0466 commit 3ffb204

2 files changed

Lines changed: 16 additions & 9 deletions

File tree

allure-pytest/src/listener.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,14 @@ def pytest_runtest_makereport(self, item, call):
168168
status_details = None
169169

170170
if call.excinfo:
171+
message = escape_non_unicode_symbols(call.excinfo.exconly())
172+
if hasattr(report, 'wasxfail'):
173+
reason = report.wasxfail
174+
message = ('XFAIL {}'.format(reason) if reason else 'XFAIL') + '\n\n' + message
175+
trace = escape_non_unicode_symbols(report.longreprtext)
171176
status_details = StatusDetails(
172-
message=escape_non_unicode_symbols(call.excinfo.exconly()),
173-
trace=escape_non_unicode_symbols(report.longreprtext))
177+
message=message,
178+
trace=trace)
174179
if (status != Status.SKIPPED
175180
and not (call.excinfo.errisinstance(AssertionError)
176181
or call.excinfo.errisinstance(pytest.fail.Exception))):

allure-pytest/test/acceptance/status/xfail_call_status_test.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,31 @@ def test_xfail(executed_docstring_source):
1919
assert_that(executed_docstring_source.allure_report,
2020
has_test_case("test_xfail_example",
2121
with_status("skipped"),
22-
has_status_details(with_message_contains("AssertionError"),
22+
has_status_details(with_message_contains("XFAIL"),
23+
with_message_contains("AssertionError"),
2324
with_trace_contains("def test_xfail_example():")
2425
)
2526
)
2627
)
2728

2829

29-
def test_xfail_raise_mentioned_exception(executed_docstring_source):
30+
def test_xfail_with_reason_raise_mentioned_exception(executed_docstring_source):
3031
"""
3132
>>> import pytest
3233
33-
>>> @pytest.mark.xfail(raises=AssertionError)
34-
... def test_xfail_raise_mentioned_exception_example():
34+
>>> @pytest.mark.xfail(raises=AssertionError, reason='Some reason')
35+
... def test_xfail_with_reason_raise_mentioned_exception_example():
3536
... assert False
3637
3738
"""
3839

3940
assert_that(executed_docstring_source.allure_report,
40-
has_test_case("test_xfail_raise_mentioned_exception_example",
41+
has_test_case("test_xfail_with_reason_raise_mentioned_exception_example",
4142
with_status("skipped"),
42-
has_status_details(with_message_contains("AssertionError"),
43+
has_status_details(with_message_contains("XFAIL Some reason"),
44+
with_message_contains("AssertionError"),
4345
with_trace_contains(
44-
"def test_xfail_raise_mentioned_exception_example():")
46+
"def test_xfail_with_reason_raise_mentioned_exception_example():")
4547
)
4648
)
4749
)

0 commit comments

Comments
 (0)