Skip to content

Commit f8f36cc

Browse files
authored
fix scenario outline status (fixes #455 via #462)
1 parent eafc57e commit f8f36cc

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

allure-pytest-bdd/src/pytest_bdd_listener.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
from .utils import get_uuid
1010
from .utils import get_step_name
1111
from .utils import get_status_details
12+
from .utils import get_pytest_report_status
1213
from allure_commons.model2 import StatusDetails
13-
from functools import partial, reduce
14+
from functools import partial
1415
from allure_commons.lifecycle import AllureLifecycle
1516
from .utils import get_full_name
1617

@@ -84,8 +85,7 @@ def pytest_bdd_step_func_lookup_error(self, request, feature, scenario, step, ex
8485
def pytest_runtest_makereport(self, item, call):
8586
report = (yield).get_result()
8687

87-
status = reduce(lambda final_status, current_status: final_status or getattr(report, current_status, None),
88-
["failed", "passed", "skipped"])
88+
status = get_pytest_report_status(report)
8989

9090
status_details = StatusDetails(
9191
message=call.excinfo.exconly(),

allure-pytest-bdd/src/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from uuid import UUID
33
from allure_commons.utils import md5
44
from allure_commons.model2 import StatusDetails
5+
from allure_commons.model2 import Status
56
from allure_commons.utils import format_exception
67

78

@@ -22,3 +23,11 @@ def get_status_details(exception):
2223
message = str(exception)
2324
trace = format_exception(type(exception), exception)
2425
return StatusDetails(message=message, trace=trace) if message or trace else None
26+
27+
28+
def get_pytest_report_status(pytest_report):
29+
pytest_statuses = ('failed', 'passed', 'skipped')
30+
statuses = (Status.FAILED, Status.PASSED, Status.SKIPPED)
31+
for pytest_status, status in zip(pytest_statuses, statuses):
32+
if getattr(pytest_report, pytest_status):
33+
return status

0 commit comments

Comments
 (0)