Testing 如何在robot框架中设置多级测试设置/拆卸

Testing 如何在robot框架中设置多级测试设置/拆卸,testing,automated-tests,robotframework,teardown,Testing,Automated Tests,Robotframework,Teardown,我有一些机器人测试用例在目录中分开。目录层次结构是: ParentTestDirectory |__ ChidTestDirectoryOne |__ TestOne.robot |__ ChidTestDirectoryTwo |__ TestTwo.robot |__ __init__.robot \uuuuuuuuuuuuuuuuuuuuu.robot的内容: *** Settings *** Test Setup

我有一些机器人测试用例在目录中分开。目录层次结构是:

ParentTestDirectory
    |__ ChidTestDirectoryOne
        |__ TestOne.robot
    |__ ChidTestDirectoryTwo
        |__ TestTwo.robot
    |__ __init__.robot
\uuuuuuuuuuuuuuuuuuuuu.robot的内容

*** Settings ***
Test Setup          LOG TO CONSOLE   Test setup from __init__.robot
Test Teardown       LOG TO CONSOLE   Test teardown from __init__.robot
*** 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!
*** 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!
TestOne.robot的内容

*** Settings ***
Test Setup          LOG TO CONSOLE   Test setup from __init__.robot
Test Teardown       LOG TO CONSOLE   Test teardown from __init__.robot
*** 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!
*** 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!
TestTwo.robot的内容

*** Settings ***
Test Setup          LOG TO CONSOLE   Test setup from __init__.robot
Test Teardown       LOG TO CONSOLE   Test teardown from __init__.robot
*** 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!
*** 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!
我有一个用python编写的runner,它使用robot runner模块;这是使用命令
sudo python run.py--testsuit scenarios运行测试用例的结果。ParentTestDirectory

==============================================================================
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
==============================================================================

如您所见,它只运行最新的测试设置/拆卸。我希望它也从父目录运行测试设置/拆卸,并且应该在子目录之前执行。换句话说,我希望在每个测试用例进行自己的设置之前,分别为其运行父级设置。我可以通过robot框架功能实现这一点吗

一个测试用例只能有一个设置。将
测试设置
作为一个整体放入套件的设置中时,将定义默认测试设置。如果子套件或单个测试定义了测试设置,则将运行该测试设置,而不是更高级别定义的套件级设置

在robot framework用户指南中标题为的部分中,它指出了以下内容(我强调了这一点):

测试设置、测试拆卸、测试超时

将测试设置/拆卸或测试超时的默认值设置为此目录包含的所有测试用例可以在较低级别上重写。在Robot Framework 2.7中添加了对在初始化文件中定义测试超时的支持


如果希望套件定义除每个测试指定的设置之外还运行的测试设置,则应将该代码放入自定义关键字中,并让每个测试调用该关键字作为其设置的一部分。

是否希望在启动所有子测试用例之前,父级设置只运行一次?如果是,请考虑使用<代码>套件设置< /COD>和<代码>套件拆卸> <代码> > <代码>或者您希望在每个测试用例自己的设置之前,分别为其运行父设置吗?@A.Kootstra,您的第二个猜测是正确的。我希望在为每个测试用例运行自己的设置之前,分别为其运行父级设置。当第二个选项是您正在寻找的选项时,@Brian Oakley的答案是正确的。