Skip to content

Commit dc83437

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

File tree

5 files changed

+50
-11
lines changed

5 files changed

+50
-11
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: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
from __future__ import annotations
2+
13
from functools import wraps
2-
from typing import Any, Callable, TypeVar, Union, overload
4+
from typing import Any, Callable, TypeVar, overload
35

46
from allure_commons._core import plugin_manager
57
from allure_commons.types import LabelType, LinkType, ParameterMode
@@ -133,7 +135,12 @@ def link(url, link_type=LinkType.LINK, name=None):
133135
plugin_manager.hook.add_link(url=url, link_type=link_type, name=name)
134136

135137
@staticmethod
136-
def parameter(name, value, excluded=None, mode: Union[ParameterMode, None] = None):
138+
def parameter(
139+
name: str,
140+
value: Any,
141+
excluded: bool | None = None,
142+
mode: ParameterMode | None = None,
143+
) -> None:
137144
plugin_manager.hook.add_parameter(name=name, value=value, excluded=excluded, mode=mode)
138145

139146
@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 & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import pytest
21
from hamcrest import assert_that, has_entry, ends_with, all_of
32
from tests.allure_pytest.pytest_runner import AllurePytestRunner
43

@@ -182,7 +181,6 @@ def test_dynamic_parameter_excluded(allure_pytest_runner: AllurePytestRunner):
182181
)
183182

184183

185-
@pytest.mark.xfail(reason="Known issue: cannot explicitly set excluded flag to False")
186184
def test_dynamic_parameter_excluded_false(allure_pytest_runner: AllurePytestRunner):
187185
"""
188186
>>> import allure
@@ -250,7 +248,6 @@ def test_dynamic_parameter_override(allure_pytest_runner: AllurePytestRunner):
250248
)
251249

252250

253-
@pytest.mark.xfail(reason="Known issue: cannot override excluded flag")
254251
def test_dynamic_parameter_override_excluded(allure_pytest_runner: AllurePytestRunner):
255252
"""
256253
>>> import pytest
@@ -276,7 +273,6 @@ def test_dynamic_parameter_override_excluded(allure_pytest_runner: AllurePytestR
276273
)
277274

278275

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

0 commit comments

Comments
 (0)