Best Python code snippet using toolium_python
env_utils.py
Source:env_utils.py  
...85            # ---- actions before the feature ----86            context.dyn_env.execute_before_feature_steps(context)87        def before_scenario(context, scenario):88            # ---- actions before each scenario ----89            context.dyn_env.execute_before_scenario_steps(context)90        def after_scenario(context, scenario):91            # ---- actions after each scenario ----92            context.dyn_env.execute_after_scenario_steps(context)93        def after_feature(context, feature):94            # ---- actions after feature ----95            context.dyn_env.execute_after_feature_steps(context)96    """97    def __init__(self, **kwargs):98        """99        constructor100        :param kwargs: parameters set101        :param logger: logger instance102        :param show: determine if messages are displayed by console103        """104        logger_class = kwargs.get("logger", None)105        self.show = kwargs.get("show", True)106        self.logger = Logger(logger_class, self.show)107        self.init_actions()108        self.scenario_counter = 0109        self.feature_error = False110        self.scenario_error = False111    def init_actions(self):112        """clear actions lists"""113        self.actions = {ACTIONS_BEFORE_FEATURE: [],114                        ACTIONS_BEFORE_SCENARIO: [],115                        ACTIONS_AFTER_SCENARIO: [],116                        ACTIONS_AFTER_FEATURE: []}117    def get_steps_from_feature_description(self, description):118        """119        get all steps defined in the feature description associated to each action120        :param description: feature description121        """122        self.init_actions()123        label_exists = EMPTY124        step_text_start = False125        for row in description:126            if label_exists != EMPTY:127                # in case of a line with a comment, it is removed128                if "#" in row:129                    row = row[0:row.find("#")].strip()130                if any(row.startswith(x) for x in KEYWORDS):131                    self.actions[label_exists].append(row)132                elif row.strip()[-3:] in STEP_TEXT_SEPARATORS and step_text_start:133                    self.actions[label_exists][-1] = "%s\n      %s" % (self.actions[label_exists][-1], row)134                    step_text_start = False135                elif row.find(TABLE_SEPARATOR) >= 0 or step_text_start:136                    self.actions[label_exists][-1] = "%s\n      %s" % (self.actions[label_exists][-1], row)137                elif row.strip()[:3] in STEP_TEXT_SEPARATORS and not step_text_start:138                    self.actions[label_exists][-1] = "%s\n      %s" % (self.actions[label_exists][-1], row)139                    step_text_start = True140                else:141                    label_exists = EMPTY142            for action_label in self.actions:143                if row.lower().find(action_label) >= 0:144                    label_exists = action_label145    def __remove_prefix(self, step):146        """147        remove the step prefix to will be replaced by Given148        :param step: step text149        """150        step_length = len(step)151        for k in KEYWORDS:152            step = step.lstrip(k)153            if len(step) < step_length:154                break155        return step156    def __print_step_by_console(self, step):157        """158        print the step by console if the show variable is enabled159        :param step: step text160        """161        step_list = step.split('\n')162        for s in step_list:163            self.logger.by_console('    %s' % repr(s).replace("u'", "").replace("'", ""))164    def __execute_steps_by_action(self, context, action):165        """166        execute a steps set by action167        :param context: Itâs a clever place where you and behave can store information to share around,168                        automatically managed by behave.169        :param action: action executed: see labels allowed above.170        """171        if len(self.actions[action]) > 0:172            if action == ACTIONS_BEFORE_SCENARIO:173                self.logger.by_console('\n')174                self.scenario_counter += 1175                self.logger.by_console(176                    "  ------------------ Scenario Nº: %d ------------------" % self.scenario_counter)177                self.logger.by_console('  %s:' % action)178            elif action in [ACTIONS_BEFORE_FEATURE, ACTIONS_AFTER_FEATURE]:179                self.logger.by_console('\n')180            for item in self.actions[action]:181                self.scenario_error = False182                try:183                    self.__print_step_by_console(item)184                    context.execute_steps('''%s%s''' % (GIVEN_PREFIX, self.__remove_prefix(item)))185                    self.logger.debug('step defined in pre-actions: %s' % repr(item))186                except Exception as exc:187                    self.feature_error = action in [ACTIONS_BEFORE_FEATURE]188                    self.scenario_error = action in [ACTIONS_BEFORE_SCENARIO]189                    self.logger.error(exc)190                    self.error_exception = exc191                    break192    def reset_error_status(self):193        """194        Check if the dyn_env has got any exception when executing the steps and restore the value of status to False.195        :return: True if any exception has been raised when executing steps196        """197        try:198            return self.feature_error or self.scenario_error199        finally:200            self.feature_error = False201            self.scenario_error = False202    def execute_before_feature_steps(self, context):203        """204        actions before the feature205        :param context: Itâs a clever place where you and behave can store information to share around,206                        automatically managed by behave.207        """208        self.__execute_steps_by_action(context, ACTIONS_BEFORE_FEATURE)209        if context.dyn_env.feature_error:210            # Mark this Feature as skipped. Steps will not be executed.211            context.feature.mark_skipped()212    def execute_before_scenario_steps(self, context):213        """214        actions before each scenario215        :param context: Itâs a clever place where you and behave can store information to share around,216                        automatically managed by behave.217        """218        if not self.feature_error:219            self.__execute_steps_by_action(context, ACTIONS_BEFORE_SCENARIO)220        if context.dyn_env.scenario_error:221            # Mark this Scenario as skipped. Steps will not be executed.222            context.scenario.mark_skipped()223    def execute_after_scenario_steps(self, context):224        """225        actions after each scenario226        :param context: Itâs a clever place where you and behave can store information to share around,...environment.py
Source:environment.py  
...100    # Read @no_driver tag101    no_driver = 'no_driver' in scenario.tags or 'no_driver' in scenario.feature.tags102    bdd_common_before_scenario(context, scenario, no_driver)103    # Behave dynamic environment104    context.dyn_env.execute_before_scenario_steps(context)105def bdd_common_before_scenario(context_or_world, scenario, no_driver=False):106    """Common scenario initialization in behave or lettuce107    :param context_or_world: behave context or lettuce world108    :param scenario: running scenario109    :param no_driver: True if this is an api test and driver should not be started110    """111    # Initialize and connect driver wrapper112    start_driver(context_or_world, no_driver)113    # Add assert screenshot methods with scenario configuration114    add_assert_screenshot_methods(context_or_world, scenario)115    # Configure Jira properties116    save_jira_conf()117    context_or_world.logger.info("Running new scenario: %s", scenario.name)118def create_and_configure_wrapper(context_or_world):...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!!
