From 7ccb34ecddc674ad23ed1f0e607fd12b6d5954b9 Mon Sep 17 00:00:00 2001 From: Lukasz Rajewski Date: Fri, 1 Mar 2024 00:05:45 +0100 Subject: Error reason added to the test reports Error reason added to the test reports Issue-ID: TEST-402 Signed-off-by: Lukasz Rajewski Change-Id: I024626764b134d9fe7607988cf46918414f1deb3 --- src/onaptests/steps/base.py | 29 +++++++++++++++++++---------- src/onaptests/steps/reports_collection.py | 4 +++- 2 files changed, 22 insertions(+), 11 deletions(-) (limited to 'src/onaptests/steps') diff --git a/src/onaptests/steps/base.py b/src/onaptests/steps/base.py index 00229ba..c615047 100644 --- a/src/onaptests/steps/base.py +++ b/src/onaptests/steps/base.py @@ -40,6 +40,7 @@ class StoreStateHandler(ABC): else: self._state_execute = True initial_exception = None + error_reason = [] try: execution_status: Optional[ReportStepStatus] = ReportStepStatus.FAIL if cleanup: @@ -81,11 +82,16 @@ class StoreStateHandler(ABC): if initial_exception: substep_exc = OnapTestExceptionGroup("Cleanup Exceptions", [initial_exception, substep_exc]) + error_reason = substep_exc.root_cause raise substep_exc except (OnapTestException, SDKException) as test_exc: if initial_exception: test_exc = OnapTestExceptionGroup("Cleanup Exceptions", [initial_exception, test_exc]) + if isinstance(test_exc, OnapTestException): + error_reason = test_exc.root_cause + else: + error_reason = [str(test_exc)] raise test_exc finally: if not cleanup: @@ -95,7 +101,8 @@ class StoreStateHandler(ABC): step_description=self._step_title(cleanup), step_execution_status=execution_status, step_execution_duration=time.time() - self._start_cleanup_time, - step_component=self.component + step_component=self.component, + step_error_reason=error_reason ) else: if not self._start_execution_time: @@ -110,7 +117,8 @@ class StoreStateHandler(ABC): step_execution_status=(execution_status if execution_status else ReportStepStatus.FAIL), step_execution_duration=time.time() - self._start_execution_time, - step_component=self.component + step_component=self.component, + step_error_reason=error_reason ) wrapper._is_wrapped = True return wrapper @@ -349,18 +357,19 @@ class BaseStep(StoreStateHandler, ABC): Override this method and remember to call `super().execute()` before. """ - substep_error = False + substep_exceptions = [] for step in self._steps: try: step.execute() except (OnapTestException, SDKException) as substep_err: - substep_error = True if step._break_on_error: - raise SubstepExecutionException from substep_err - self._logger.exception(substep_err) + raise SubstepExecutionException("", substep_err) # noqa: W0707 + substep_exceptions.append(substep_err) if self._steps: - if substep_error and self._break_on_error: - raise SubstepExecutionException("Cannot continue due to failed substeps") + if len(substep_exceptions) > 0 and self._break_on_error: + if len(substep_exceptions) == 1: + raise SubstepExecutionException("", substep_exceptions[0]) + raise SubstepExecutionExceptionGroup("", substep_exceptions) self._log_execution_state("CONTINUE") self._substeps_executed = True self._start_execution_time = time.time() @@ -381,13 +390,13 @@ class BaseStep(StoreStateHandler, ABC): step._default_cleanup_handler() except (OnapTestException, SDKException) as substep_err: try: - raise SubstepExecutionException from substep_err + raise SubstepExecutionException("", substep_err) # noqa: W0707 except Exception as e: exceptions_to_raise.append(e) if len(exceptions_to_raise) > 0: if len(exceptions_to_raise) == 1: raise exceptions_to_raise[0] - raise SubstepExecutionExceptionGroup("Substep Exceptions", exceptions_to_raise) + raise SubstepExecutionExceptionGroup("", exceptions_to_raise) def execute(self) -> None: """Step's execute. diff --git a/src/onaptests/steps/reports_collection.py b/src/onaptests/steps/reports_collection.py index 2f92660..4f0965f 100644 --- a/src/onaptests/steps/reports_collection.py +++ b/src/onaptests/steps/reports_collection.py @@ -25,6 +25,7 @@ class Report: step_execution_status: ReportStepStatus step_execution_duration: float step_component: str + step_error_reason: List[str] class ReportsCollection: @@ -103,7 +104,8 @@ class ReportsCollection: 'description': step_report.step_description, 'status': step_report.step_execution_status.value, 'duration': step_report.step_execution_duration, - 'component': step_report.step_component + 'component': step_report.step_component, + 'reason': step_report.step_error_reason } for step_report in reversed(self.report) ] -- cgit 1.2.3-korg