示例#1
0
    def test_start_end_body_item(self):
        class Visitor(SuiteVisitor):
            def __init__(self):
                self.visited = []

            def start_body_item(self, item):
                self.visited.append(f'START {item.type}')

            def end_body_item(self, item):
                self.visited.append(f'END {item.type}')

        visitor = Visitor()
        RunningSuite.from_model(get_model('''
*** Test Cases ***
Example
    IF    True
        WHILE    True
            BREAK
        END
    ELSE IF    True
        FOR    ${x}    IN    @{stuff}
            CONTINUE
        END
    ELSE
        TRY
            Keyword
        EXCEPT    Something
            Keyword
        ELSE
            Keyword
        FINALLY
            Keyword
        END
    END
''')).visit(visitor)
        expected = '''
START IF/ELSE ROOT
    START IF
        START WHILE
            START BREAK
            END BREAK
        END WHILE
    END IF
    START ELSE IF
        START FOR
            START CONTINUE
            END CONTINUE
        END FOR
    END ELSE IF
    START ELSE
        START TRY/EXCEPT ROOT
            START TRY
                START KEYWORD
                END KEYWORD
            END TRY
            START EXCEPT
                START KEYWORD
                END KEYWORD
            END EXCEPT
            START ELSE
                START KEYWORD
                END KEYWORD
            END ELSE
            START FINALLY
                START KEYWORD
                END KEYWORD
            END FINALLY
        END TRY/EXCEPT ROOT
    END ELSE
END IF/ELSE ROOT
'''.strip().splitlines()
        assert_equal(visitor.visited, [e.strip() for e in expected])