Best Python code snippet using autotest_python
coverage.py
Source:coverage.py  
...540            if len(tree) == 3 and type(tree[2]) == type(1):541                return tree[2]542            tree = tree[1]543    544    def last_line_of_tree(self, tree):545        while True:546            if len(tree) == 3 and type(tree[2]) == type(1):547                return tree[2]548            tree = tree[-1]549    550    def find_docstring_pass_pair(self, tree, spots):551        for i in range(1, len(tree)):552            if self.is_string_constant(tree[i]) and self.is_pass_stmt(tree[i+1]):553                first_line = self.first_line_of_tree(tree[i])554                last_line = self.last_line_of_tree(tree[i+1])555                self.record_multiline(spots, first_line, last_line)556        557    def is_string_constant(self, tree):558        try:559            return tree[0] == symbol.stmt and tree[1][1][1][0] == symbol.expr_stmt560        except:561            return False562        563    def is_pass_stmt(self, tree):564        try:565            return tree[0] == symbol.stmt and tree[1][1][1][0] == symbol.pass_stmt566        except:567            return False568    def record_multiline(self, spots, i, j):569        for l in range(i, j+1):570            spots[l] = (i, j)571            572    def get_suite_spots(self, tree, spots):573        """ Analyze a parse tree to find suite introducers which span a number574            of lines.575        """576        for i in range(1, len(tree)):577            if type(tree[i]) == type(()):578                if tree[i][0] == symbol.suite:579                    # Found a suite, look back for the colon and keyword.580                    lineno_colon = lineno_word = None581                    for j in range(i-1, 0, -1):582                        if tree[j][0] == token.COLON:583                            # Colons are never executed themselves: we want the584                            # line number of the last token before the colon.585                            lineno_colon = self.last_line_of_tree(tree[j-1])586                        elif tree[j][0] == token.NAME:587                            if tree[j][1] == 'elif':588                                # Find the line number of the first non-terminal589                                # after the keyword.590                                t = tree[j+1]591                                while t and token.ISNONTERMINAL(t[0]):592                                    t = t[1]593                                if t:594                                    lineno_word = t[2]595                            else:596                                lineno_word = tree[j][2]597                            break598                        elif tree[j][0] == symbol.except_clause:599                            # "except" clauses look like:600                            # ('except_clause', ('NAME', 'except', lineno), ...)601                            if tree[j][1][0] == token.NAME:602                                lineno_word = tree[j][1][2]603                                break604                    if lineno_colon and lineno_word:605                        # Found colon and keyword, mark all the lines606                        # between the two with the two line numbers.607                        self.record_multiline(spots, lineno_word, lineno_colon)608                    # "pass" statements are tricky: different versions of Python609                    # treat them differently, especially in the common case of a610                    # function with a doc string and a single pass statement.611                    self.find_docstring_pass_pair(tree[i], spots)612                    613                elif tree[i][0] == symbol.simple_stmt:614                    first_line = self.first_line_of_tree(tree[i])615                    last_line = self.last_line_of_tree(tree[i])616                    if first_line != last_line:617                        self.record_multiline(spots, first_line, last_line)618                self.get_suite_spots(tree[i], spots)619    def find_executable_statements(self, text, exclude=None):620        # Find lines which match an exclusion pattern.621        excluded = {}622        suite_spots = {}623        if exclude:624            reExclude = re.compile(exclude)625            lines = text.split('\n')626            for i in range(len(lines)):627                if reExclude.search(lines[i]):628                    excluded[i+1] = 1629        # Parse the code and analyze the parse tree to find out which statements...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!!
