Skip to content

Commit e8d46f8

Browse files
committed
Add an option to ignore param value in test case id
1 parent ffbeecb commit e8d46f8

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

pytest_reportportal/service.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,18 +599,26 @@ def _get_code_ref(self, item: Item) -> str:
599599

600600
def _get_test_case_id(self, mark, leaf: Dict[str, Any]) -> str:
601601
parameters: Optional[Dict[str, Any]] = leaf.get("parameters", None)
602+
parameters_indices: Optional[Dict[str, Any]] = leaf.get("parameters_indices") or {}
602603
parameterized = True
603604
selected_params: Optional[List[str]] = None
605+
use_index = False
604606
if mark is not None:
605607
parameterized = mark.kwargs.get("parameterized", False)
606608
selected_params: Optional[Union[str, List[str]]] = mark.kwargs.get("params", None)
609+
use_index = mark.kwargs.get("use_index", False)
607610
if selected_params is not None and not isinstance(selected_params, list):
608611
selected_params = [selected_params]
609612

610613
param_str = None
611614
if parameterized and parameters is not None and len(parameters) > 0:
612615
if selected_params is not None and len(selected_params) > 0:
613-
param_list = [str(parameters.get(param, None)) for param in selected_params]
616+
if use_index:
617+
param_list = [str((param, parameters_indices.get(param, None))) for param in selected_params]
618+
else:
619+
param_list = [str(parameters.get(param, None)) for param in selected_params]
620+
elif use_index:
621+
param_list = [str(param) for param in parameters_indices.items()]
614622
else:
615623
param_list = [str(param) for param in parameters.values()]
616624
param_str = "[{}]".format(",".join(sorted(param_list)))
@@ -729,6 +737,19 @@ def _get_parameters(self, item) -> Optional[Dict[str, Any]]:
729737
return None
730738
return {str(k): v.replace("\0", "\\0") if isinstance(v, str) else v for k, v in params.items()}
731739

740+
def _get_parameters_indices(self, item) -> Optional[Dict[str, Any]]:
741+
"""
742+
Get params indices of item.
743+
744+
:param item: Pytest.Item
745+
:return: dict of params indices
746+
"""
747+
indices = item.callspec.indices if hasattr(item, "callspec") else None
748+
if not indices:
749+
return None
750+
751+
return indices
752+
732753
def _process_test_case_id(self, leaf: Dict[str, Any]) -> str:
733754
"""
734755
Process Test Case ID if set.
@@ -793,6 +814,7 @@ def _process_metadata_item_start(self, leaf: Dict[str, Any]) -> None:
793814
leaf["name"] = self._process_item_name(leaf)
794815
leaf["description"] = self._get_item_description(item)
795816
leaf["parameters"] = self._get_parameters(item)
817+
leaf["parameters_indices"] = self._get_parameters_indices(item)
796818
leaf["code_ref"] = self._get_code_ref(item)
797819
leaf["test_case_id"] = self._process_test_case_id(leaf)
798820
leaf["issue"] = self._process_issue(item)

0 commit comments

Comments
 (0)