title: How to set multi-level test setup/teardown in robot framework
body: <p>I have some robot test cases separated in directories. The directory hierarchy is:</p>
  
  <pre><code>ParentTestDirectory
      |__ ChidTestDirectoryOne
          |__ TestOne.robot
      |__ ChidTestDirectoryTwo
          |__ TestTwo.robot
      |__ __init__.robot
  </code></pre>
  
  <p>Content of <code>__init__.robot</code>:</p>
  
  <pre><code>*** Settings ***
  Test Setup          LOG TO CONSOLE   Test setup from __init__.robot
  Test Teardown       LOG TO CONSOLE   Test teardown from __init__.robot
  </code></pre>
  
  <p>Content of <code>TestOne.robot</code>:</p>
  
  <pre><code>*** Settings ***
  Test Setup          LOG TO CONSOLE   Test setup from TestOne.robot
  Test Teardown       LOG TO CONSOLE   Test teardown from TestOne.robot
  *** Test Cases ***
  Test One
      LOG TO CONSOLE   This is Test One!
  </code></pre>
  
  <p>Content of <code>TestTwo.robot</code>:</p>
  
  <pre><code>*** Settings ***
  Test Setup          LOG TO CONSOLE   Test setup from TestTwo.robot
  Test Teardown       LOG TO CONSOLE   Test teardown from TestTwo.robot
  *** Test Cases ***
  Test Two
      LOG TO CONSOLE   This is Test Two!
  </code></pre>
  
  <p>I have a runner written in python which uses robot runner module; this is the result of running test cases with command <code>sudo python run.py --testsuit scenarios.ParentTestDirectory</code>:</p>
  
  <pre><code>==============================================================================
  Scenarios                                                                     
  ==============================================================================
  Scenarios.ParentTestDirectory                                                 
  ==============================================================================
  Scenarios.ParentTestDirectory.ChidTestDirectoryOne                            
  ==============================================================================
  Scenarios.ParentTestDirectory.ChidTestDirectoryOne.TestOne                    
  ==============================================================================
  Test One                                                              Test setup from TestOne.robot
  .This is Test One!
  .Test teardown from TestOne.robot
  Test One                                                              | PASS |
  ------------------------------------------------------------------------------
  Scenarios.ParentTestDirectory.ChidTestDirectoryOne.TestOne            | PASS |
  1 critical test, 1 passed, 0 failed
  1 test total, 1 passed, 0 failed
  ==============================================================================
  Scenarios.ParentTestDirectory.ChidTestDirectoryOne                    | PASS |
  1 critical test, 1 passed, 0 failed
  1 test total, 1 passed, 0 failed
  ==============================================================================
  Scenarios.ParentTestDirectory.ChidTestDirectoryTwo                            
  ==============================================================================
  Scenarios.ParentTestDirectory.ChidTestDirectoryTwo.TestTwo                    
  ==============================================================================
  Test Two                                                              Test setup from TestTwo.robot
  .This is Test Two!
  .Test teardown from TestTwo.robot
  Test Two                                                              | PASS |
  ------------------------------------------------------------------------------
  Scenarios.ParentTestDirectory.ChidTestDirectoryTwo.TestTwo            | PASS |
  1 critical test, 1 passed, 0 failed
  1 test total, 1 passed, 0 failed
  ==============================================================================
  Scenarios.ParentTestDirectory.ChidTestDirectoryTwo                    | PASS |
  1 critical test, 1 passed, 0 failed
  1 test total, 1 passed, 0 failed
  ==============================================================================
  Scenarios.ParentTestDirectory                                         | PASS |
  2 critical tests, 2 passed, 0 failed
  2 tests total, 2 passed, 0 failed
  ==============================================================================
  Scenarios                                                             | PASS |
  2 critical tests, 2 passed, 0 failed
  2 tests total, 2 passed, 0 failed
  ==============================================================================
  </code></pre>
  
  <p>As you see, it just runs the latest test setup/teardown. I want it to run test setups/teardowns from parent directories too and it should be executed prior to child's. In other words I want the parent setup to be run for each test case separately before it's own setup. Can I achieve this with robot framework capabilities? </p>