Best Python code snippet using lisa_python
testsuite.py
Source:testsuite.py  
...467            case_name = case_result.runtime_data.name468            case_result.environment = environment469            case_log = get_logger("case", case_name, parent=self.__log)470            case_log_path = self.__create_case_log_path(case_name)471            case_part_path = self.__get_test_part_path(case_log_path)472            case_working_path = self.__get_case_working_path(case_part_path)473            case_unique_name = case_log_path.name474            case_log_file = case_log_path / f"{case_log_path.name}.log"475            case_log_handler = create_file_handler(case_log_file, case_log)476            add_handler(case_log_handler, environment.log)477            case_kwargs = test_kwargs.copy()478            case_kwargs.update({"case_name": case_unique_name})479            case_kwargs.update({"log": case_log})480            case_kwargs.update({"log_path": case_log_path})481            case_kwargs.update({"working_path": case_working_path})482            case_kwargs.update({"part_path": case_part_path})483            case_kwargs.update({"result": case_result})484            case_log.info(485                f"test case '{case_result.runtime_data.full_name}' is running"486            )487            is_continue: bool = is_suite_continue488            total_timer = create_timer()489            case_result.log_file = case_log_file.relative_to(490                constants.RUN_LOCAL_LOG_PATH491            ).as_posix()492            case_result.set_status(TestStatus.RUNNING, "")493            case_timeout = case_result.runtime_data.metadata.timeout494            if is_continue:495                is_continue = self.__before_case(496                    case_result=case_result,497                    timeout=case_timeout,498                    test_kwargs=case_kwargs,499                    log=case_log,500                )501            else:502                case_result.stacktrace = suite_error_stacktrace503                case_result.set_status(TestStatus.SKIPPED, suite_error_message)504            if is_continue:505                self.__run_case(506                    case_result=case_result,507                    timeout=case_timeout,508                    test_kwargs=case_kwargs,509                    log=case_log,510                )511            self.__after_case(512                case_result=case_result,513                timeout=case_timeout,514                test_kwargs=case_kwargs,515                log=case_log,516            )517            case_log.info(518                f"result: {case_result.status.name}, " f"elapsed: {total_timer}"519            )520            remove_handler(case_log_handler, case_log)521            remove_handler(case_log_handler, environment.log)522            if case_log_handler:523                case_log_handler.close()524            if self._should_stop:525                suite_log.info("received stop message, stop run")526                break527        self.__suite_method(self.after_suite, test_kwargs=test_kwargs, log=suite_log)528    def stop(self) -> None:529        self._should_stop = True530    def __create_case_log_path(self, case_name: str) -> Path:531        while True:532            path = (533                constants.RUN_LOCAL_LOG_PATH534                / "tests"535                / f"{get_datetime_path()}-{case_name}"536            )537            if not path.exists():538                break539            sleep(0.1)540        # avoid to create folder for UT541        if not is_unittest():542            path.mkdir(parents=True)543        return path544    def __get_test_part_path(self, log_path: Path) -> Path:545        if is_unittest():546            return Path()547        return Path(log_path.parts[-2]) / log_path.parts[-1]548    def __get_case_working_path(self, test_part_path: Path) -> Path:549        if is_unittest():550            return Path()551        # The working path should be the same name as log_path, so it's easy to552        # associated. Unlike the log path, the working path won't be created, because553        # it's not used in most cases. So it doesn't need to be created too. The554        # test case should create it, when it's used.555        working_path = constants.RUN_LOCAL_WORKING_PATH / test_part_path556        return working_path557    def __suite_method(558        self, method: Callable[..., Any], test_kwargs: Dict[str, Any], log: Logger...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!!
