Best Python code snippet using lisa_python
legacy_runner.py
Source:legacy_runner.py  
...157        completed_cases: List[Dict[str, str]],158    ) -> None:159        self._extend_all_results(all_cases=all_cases)160        self._set_running_results(running_cases=running_cases)161        self._set_completed_results(completed_cases=completed_cases)162    @property163    def results(self) -> List[TestResult]:164        return self._results165    def _extend_all_results(self, all_cases: List[Dict[str, str]]) -> None:166        """167        The test case list is in single file, and the order is stable.168        So just extend the list, if more test cases found.169        """170        if len(self._results) < len(all_cases):171            for i in range(len(self._results), len(all_cases)):172                case_metadata = TestCaseMetadata("")173                case_metadata.name = all_cases[i]["name"]174                case_metadata.full_name = f"legacy.{case_metadata.name}"175                case_metadata.suite = self.test_suite_metadata176                case_runtime_data = TestCaseRuntimeData(case_metadata)177                # create result message for new cases178                result = TestResult(179                    id_=f"{self.id_}_{len(self._results)}",180                    runtime_data=case_runtime_data,181                )182                self._results.append(result)183    def _set_running_results(self, running_cases: List[Dict[str, str]]) -> None:184        # copy a list to find changed cases185        new_running_cases = running_cases[:]186        not_matched_results = [187            x for x in self._results if x.status != TestStatus.QUEUED188        ]189        # remove existing running case, left new running cases190        for running_case in running_cases:191            for result in not_matched_results:192                if self._is_matched_infomation(result, running_case):193                    new_running_cases.remove(running_case)194                    not_matched_results.remove(result)195                    break196        if not_matched_results:197            self.log.error(198                f"not matched should be empty, but {not_matched_results}, "199                f"parsed running cases: {[running_cases]}"200            )201        # set new running case information202        queued_results = [x for x in self._results if x.status == TestStatus.QUEUED]203        for running_case in new_running_cases:204            name = running_case["name"]205            for result in queued_results:206                if result.name == name:207                    # initialize new running case208                    running_case["status"] = str(TestStatus.RUNNING.name)209                    self._set_result(result, information=running_case)210                    # every not run just match one211                    queued_results.remove(result)212                    break213    def _set_completed_results(self, completed_cases: List[Dict[str, str]]) -> None:214        new_completed_cases = completed_cases[:]215        not_matched_results = [216            x217            for x in self._results218            if x.status not in [TestStatus.QUEUED, TestStatus.RUNNING]219        ]220        # remove existing completed case221        for completed_case in completed_cases:222            for result in not_matched_results:223                if self._is_matched_infomation(result, completed_case):224                    new_completed_cases.remove(completed_case)225                    not_matched_results.remove(result)226                    break227        if not_matched_results:...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
