在嵌套文件夹结构机器人framewrok

时间:2019-09-26 21:59:59

标签: python python-3.x automation automated-tests robotframework

我是机器人框架的新手,并试图更好地理解测试文件夹时 Suite Setup Suite Teardown 中的概念和用法结构不是“平坦的”。在网上进行了长时间的搜索之后,Robot framework user guide - executing tests sectionthis question都与我的情况相似但又不完全相同,但我仍然没有找到任何解决方案,因此我们继续。

我的项目现在包含以下文件:

_init__.robot,其中包含Suite SetupSuite Teardown“定义”,如下所示:

*** Settings ***
Library   /path/to/some/python/file.py
Suite Setup  myCustomSuiteSetup
Suite Teardown  myCustomSuiteTeardown

*** Keywords ***
myCustomSuiteSetup
    ${ret_code} =  run keyword MySuiteSetupKeyword
    should be eqaul as integers ${ret_code} 0

myCustomSuiteTeardown
    ${ret_code} =  run keyword MySuiteTeardownKeyword
    should be eqaul as integers ${ret_code} 0

myCustomSuiteTeardownMySuiteTeardownKeyword是与文件/path/to/some/python/file.py中的某些Python函数“链接”的关键字。

我项目中的4个套件文件当前的排列方式如下:

|--tests
|----suite_1.robot
|----suite_2.robot 
|----suite_3.robot
|----suite_4.robot
|----__init__.robot

现在,Suite SetupSuite Teardown的目的(和用法)是Suite Setup将在ENTIRE tests文件夹的运行开始时运行,即-第一个套件的第一个测试用例,在此情况下为suite_1.robotSuite Teardown将在 last 套件的 last 测试用例(在本例中为suite_4.robot)中运行之后

为此,我只需按以下方式调用所有套件(从tests文件夹“上方”的一个文件夹中):

robot tests

到目前为止很好。

现在我的问题如下:实际上,我希望“重新排列”测试文件的文件夹结构,如下所示:

|--tests
|----testGroup1
|--------suite_1.robot
|--------suite_2.robot 
|----testGroup2
|--------suite_3.robot
|--------suite_4.robot
|--__init__.robot    <----- Where the __init__.robot file should be placed now ?

这意味着,要将测试套件“聚集”到子文件夹中,我仍然希望像以前一样保持Suite SetupSuite Teardown的使用,即-调用了每个可能的子集“根”文件夹testsSuite SetupSuite Teardown下的测试套件必须是要执行的第一个和最后一个(分别)“步骤”,例如,假设我希望运行suite_3.robotsuite_4.robot,那么现在,Suite Setup应该在suite_3.robot中的第一个测试用例之前被调用,Suite Teardown应该在最后一个测试之后被调用suite_4.robot中的大小写。另外,当然,我希望仅保留__init__.robot文件的单个副本-即-在每个子文件夹{{1中,不要保留__init__.robot的两个相似副本}}和testGroup1。当我这样做时,它起作用了,但这不是我希望这样做的(正确)方法。

所以我的问题是:

  1. 我需要在哪里放置testGroup2文件?

  2. 例如,如果我希望运行__init__.robot中的两个测试套件(即-testGroup2suite_3.robot),我需要使用什么命令?

当然,如果这不是实现我的目标的“正确”方法(方法)(对于每个测试套件子集,使用单一且统一的suite_4.robotSuite Setup)-请提出建议完成。

注意::我正在使用机器人框架3.1.2(Linux上为Python 3.5.2)

1 个答案:

答案 0 :(得分:2)

您在包含teststestGroup1的{​​{1}}文件夹中放置初始化文件是正确的。这样,如果您至少运行testGroup2中或其子文件夹中的一项测试,则套件安装程序将在所有此类测试之前运行,然后套件随即拆卸。

要强制运行Suite Setup和Suite Teardown,必须将父文件夹(tests)保留为运行的文件夹。最好始终运行包含所有测试的文件夹。这样一来,您就不会误会任何套件设置或拆卸。

要仅运行 选择测试,请对标签使用tests--include选项,或者对标签使用--exclude--suite

在您的示例中,您将运行以下命令:

--test,仅运行suite_3和suite_4

或者,您可以使用完全限定的套件名称:

robot --suite suite_3 --suite suite_4 tests