Skip to content

Commit b543324

Browse files
committed
fix(allure-pytest): runtime overrides of parameter options
1 parent e345087 commit b543324

File tree

5 files changed

+47
-9
lines changed

5 files changed

+47
-9
lines changed

allure-pytest-bdd/src/allure_api_listener.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1+
from __future__ import annotations
2+
3+
from typing import Any
4+
15
import pytest
26

37
import allure_commons
48

59
from allure_commons.model2 import Label
610
from allure_commons.model2 import Link
711
from allure_commons.model2 import Parameter
12+
from allure_commons.types import ParameterMode
813
from allure_commons.utils import represent
914

1015
from .utils import ALLURE_DESCRIPTION_HTML_MARK
@@ -85,7 +90,13 @@ def add_link(self, url, link_type, name):
8590
test_result.links.append(Link(url=url, name=name, type=link_type))
8691

8792
@allure_commons.hookimpl
88-
def add_parameter(self, name, value, excluded, mode):
93+
def add_parameter(
94+
self,
95+
name: str,
96+
value: Any,
97+
excluded: bool | None,
98+
mode: ParameterMode | None,
99+
) -> None:
89100
with self.lifecycle.update_test_case() as test_result:
90101
test_result.parameters.append(
91102
Parameter(

allure-pytest/src/listener.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
from __future__ import annotations
2+
3+
from typing import Any
4+
15
import pytest
26
import doctest
37

@@ -293,17 +297,26 @@ def add_label(self, label_type, labels):
293297
test_result.labels.append(Label(label_type, label))
294298

295299
@allure_commons.hookimpl
296-
def add_parameter(self, name, value, excluded, mode: ParameterMode):
300+
def add_parameter(
301+
self,
302+
name: str,
303+
value: Any,
304+
excluded: bool | None,
305+
mode: ParameterMode | None,
306+
) -> None:
297307
test_result: TestResult = self.allure_logger.get_test(None)
298-
existing_param = next(filter(lambda x: x.name == name, test_result.parameters), None)
308+
existing_param = next((p for p in test_result.parameters if p.name == name), None)
309+
299310
if existing_param:
300311
existing_param.value = represent(value)
312+
existing_param.excluded = excluded
313+
existing_param.mode = mode.value if mode else None
301314
else:
302315
test_result.parameters.append(
303316
Parameter(
304317
name=name,
305318
value=represent(value),
306-
excluded=excluded or None,
319+
excluded=excluded,
307320
mode=mode.value if mode else None
308321
)
309322
)

allure-python-commons/src/allure_commons/_allure.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,12 @@ def link(url, link_type=LinkType.LINK, name=None):
133133
plugin_manager.hook.add_link(url=url, link_type=link_type, name=name)
134134

135135
@staticmethod
136-
def parameter(name, value, excluded=None, mode: Union[ParameterMode, None] = None):
136+
def parameter(
137+
name: str,
138+
value: Any,
139+
excluded: bool | None = None,
140+
mode: ParameterMode | None = None,
141+
) -> None:
137142
plugin_manager.hook.add_parameter(name=name, value=value, excluded=excluded, mode=mode)
138143

139144
@staticmethod

allure-python-commons/src/allure_commons/_hooks.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
from __future__ import annotations
2+
3+
from typing import Any
4+
15
from pluggy import HookspecMarker, HookimplMarker
26

7+
from allure_commons.types import ParameterMode
8+
39
hookspec = HookspecMarker("allure")
410
hookimpl = HookimplMarker("allure")
511

@@ -47,7 +53,13 @@ def add_link(self, url, link_type, name):
4753
""" url """
4854

4955
@hookspec
50-
def add_parameter(self, name, value, excluded, mode):
56+
def add_parameter(
57+
self,
58+
name: str,
59+
value: Any,
60+
excluded: bool | None,
61+
mode: ParameterMode | None,
62+
) -> None:
5163
""" parameter """
5264

5365
@hookspec

tests/allure_pytest/acceptance/parametrization/parametrization_test.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ def test_dynamic_parameter_excluded(allure_pytest_runner: AllurePytestRunner):
182182
)
183183

184184

185-
@pytest.mark.xfail(reason="Known issue: cannot explicitly set excluded flag to False")
186185
def test_dynamic_parameter_excluded_false(allure_pytest_runner: AllurePytestRunner):
187186
"""
188187
>>> import allure
@@ -250,7 +249,6 @@ def test_dynamic_parameter_override(allure_pytest_runner: AllurePytestRunner):
250249
)
251250

252251

253-
@pytest.mark.xfail(reason="Known issue: cannot override excluded flag")
254252
def test_dynamic_parameter_override_excluded(allure_pytest_runner: AllurePytestRunner):
255253
"""
256254
>>> import pytest
@@ -276,7 +274,6 @@ def test_dynamic_parameter_override_excluded(allure_pytest_runner: AllurePytestR
276274
)
277275

278276

279-
@pytest.mark.xfail(reason="Known issue: cannot override mode")
280277
def test_dynamic_parameter_override_mode(allure_pytest_runner: AllurePytestRunner):
281278
"""
282279
>>> import pytest

0 commit comments

Comments
 (0)