Skip to content

Commit d933baa

Browse files
authored
Support for markers with multiple values
1 parent dedd416 commit d933baa

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

pytest_reportportal/service.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -635,17 +635,24 @@ def get_marker_value(item, keyword):
635635
# pytest < 3.6
636636
marker = item.keywords.get(keyword)
637637

638-
return "{}:{}".format(keyword, marker.args[0]) \
639-
if marker and marker.args else keyword
638+
marker_values = []
639+
if marker and marker.args:
640+
for arg in marker.args:
641+
marker_values.append("{}:{}".format(keyword, arg))
642+
else:
643+
marker_values.append(keyword)
644+
# returns a list of strings to accommodate multiple values
645+
return marker_values
640646

641647
try:
642648
get_marker = getattr(item, "get_closest_marker")
643649
except AttributeError:
644650
get_marker = getattr(item, "get_marker")
645651

646-
raw_attrs = [get_marker_value(item, k)
647-
for k in item.keywords if get_marker(k) is not None
648-
and k not in self.ignored_attributes]
652+
raw_attrs = []
653+
for k in item.keywords:
654+
if get_marker(k) is not None and k not in self.ignored_attributes:
655+
raw_attrs.extend(get_marker_value(item, k))
649656
raw_attrs.extend(item.session.config.getini('rp_tests_attributes'))
650657
return gen_attributes(raw_attrs)
651658

tests/test_service.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@ def getini(option):
1717
def get_closest_marker(name):
1818
return {'test_marker': pytest.mark.test_marker,
1919
'test_decorator_key':
20-
pytest.mark.test_decorator_key('test_decorator_value')
20+
pytest.mark.test_decorator_key('test_decorator_value'),
21+
'test_decorator_key_with_multi_value':
22+
pytest.mark.test_decorator_key_with_multi_value(
23+
'test_value1', 'test_value2')
2124
}.get(name)
2225

2326
class NodeKeywords(object):
2427
_keywords = ['pytestmark',
2528
'ini_marker',
2629
'test_marker',
2730
'test_decorator_key',
31+
'test_decorator_key_with_multi_value',
2832
'test_ini_key']
2933

3034
def __iter__(self):
@@ -37,6 +41,10 @@ def __iter__(self):
3741
assert markers == [{'value': 'test_marker'},
3842
{'key': 'test_decorator_key',
3943
'value': 'test_decorator_value'},
44+
{'key': 'test_decorator_key_with_multi_value',
45+
'value': 'test_value1'},
46+
{'key': 'test_decorator_key_with_multi_value',
47+
'value': 'test_value2'},
4048
{'value': 'ini_marker'},
4149
{'key': 'test_ini_key',
4250
'value': 'test_ini_value'}]

0 commit comments

Comments
 (0)