Skip to content

Commit 3e76f96

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

4 files changed

Lines changed: 21 additions & 0 deletions

File tree

pytest_reportportal/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class AgentConfig:
4444
rp_ignore_attributes: set
4545
rp_is_skipped_an_issue: bool
4646
rp_issue_id_marks: bool
47+
rp_ignore_param_val: bool
4748
rp_bts_issue_url: str
4849
rp_bts_project: str
4950
rp_bts_url: str
@@ -82,6 +83,7 @@ def __init__(self, pytest_config: Config) -> None:
8283
self.rp_ignore_attributes = set(self.find_option(pytest_config, "rp_ignore_attributes") or [])
8384
self.rp_is_skipped_an_issue = self.find_option(pytest_config, "rp_is_skipped_an_issue")
8485
self.rp_issue_id_marks = self.find_option(pytest_config, "rp_issue_id_marks")
86+
self.rp_ignore_param_val = self.find_option(pytest_config, "rp_ignore_param_val")
8587
self.rp_bts_issue_url = self.find_option(pytest_config, "rp_bts_issue_url")
8688
if not self.rp_bts_issue_url:
8789
self.rp_bts_issue_url = self.find_option(pytest_config, "rp_issue_system_url")

pytest_reportportal/plugin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ def add_shared_option(name, help_str, default=None, action="store"):
634634
help="Path separator to display directories in test hierarchy",
635635
)
636636
parser.addini("rp_hierarchy_test_file", default=True, type="bool", help="Show file name in hierarchy")
637+
parser.addini("rp_ignore_param_val", default=False, type="bool", help="Ignore parameter values in test id")
637638
parser.addini(
638639
"rp_issue_system_url",
639640
default="",

pytest_reportportal/service.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,7 @@ 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", None)
602603
parameterized = True
603604
selected_params: Optional[List[str]] = None
604605
if mark is not None:
@@ -611,6 +612,8 @@ def _get_test_case_id(self, mark, leaf: Dict[str, Any]) -> str:
611612
if parameterized and parameters is not None and len(parameters) > 0:
612613
if selected_params is not None and len(selected_params) > 0:
613614
param_list = [str(parameters.get(param, None)) for param in selected_params]
615+
elif self._config.rp_ignore_param_val:
616+
param_list = [str(param) for param in parameters_indices.items()]
614617
else:
615618
param_list = [str(param) for param in parameters.values()]
616619
param_str = "[{}]".format(",".join(sorted(param_list)))
@@ -729,6 +732,19 @@ def _get_parameters(self, item) -> Optional[Dict[str, Any]]:
729732
return None
730733
return {str(k): v.replace("\0", "\\0") if isinstance(v, str) else v for k, v in params.items()}
731734

735+
def _get_parameters_indices(self, item) -> Optional[Dict[str, Any]]:
736+
"""
737+
Get params indices of item.
738+
739+
:param item: Pytest.Item
740+
:return: dict of params indices
741+
"""
742+
indices = item.callspec.indices if hasattr(item, "callspec") else None
743+
if not indices:
744+
return None
745+
746+
return indices
747+
732748
def _process_test_case_id(self, leaf: Dict[str, Any]) -> str:
733749
"""
734750
Process Test Case ID if set.
@@ -793,6 +809,7 @@ def _process_metadata_item_start(self, leaf: Dict[str, Any]) -> None:
793809
leaf["name"] = self._process_item_name(leaf)
794810
leaf["description"] = self._get_item_description(item)
795811
leaf["parameters"] = self._get_parameters(item)
812+
leaf["parameters_indices"] = self._get_parameters_indices(item)
796813
leaf["code_ref"] = self._get_code_ref(item)
797814
leaf["test_case_id"] = self._process_test_case_id(leaf)
798815
leaf["issue"] = self._process_issue(item)

tests/unit/test_plugin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@ def test_pytest_addoption_adds_correct_ini_file_arguments():
345345
"rp_hierarchy_dirs",
346346
"rp_hierarchy_dir_path_separator",
347347
"rp_hierarchy_test_file",
348+
"rp_ignore_param_val",
348349
"rp_issue_system_url",
349350
"rp_bts_issue_url",
350351
"rp_bts_project",

0 commit comments

Comments
 (0)