机器人框架:为整个测试套件运行设置

Posted

技术标签:

【中文标题】机器人框架:为整个测试套件运行设置【英文标题】:Robot framework: run setup for an entire test suite 【发布时间】:2016-02-20 14:54:26 【问题描述】:

是否可以在 ROBOT 中为整个测试套件运行设置,而不是为每个文件单独运行设置?我想在套件开始时运行设置,如果设置失败,则根本不运行任何测试用例。

例如,给定以下文件:

*** Settings ***
Test Setup    Setup Fails

*** Test Cases ***
Case1
    Should Be True    1<2

Case2
    Should Be True    2<1

*** Keywords ***
Setup Fails
    Should Be True    2<1

我根本不希望 Case1 和 Case2 都执行。实际上,两者都尝试单独使用 Setup Fails 作为设置,并且output.xml 文件的每个测试用例的状态为 FAIL,并显示一条消息“Setup failed...”。相反,我希望 xml 文件具有“失败”套件的状态,并显示“安装失败...”消息,并且测试用例要么不包括在内,要么表明它们尚未运行。

这是 ROBOT 支持的吗?

相反,我想收到一条错误消息

【问题讨论】:

你问的不是Suite Setup吗? 我不这么认为。我只是想找到一种方法来区分套件设置失败和案例未运行,以及套件设置通过但每个测试用例都有单独失败的设置。 【参考方案1】:

机器人支持suite setups。例如:

*** Settings ***
Suite Setup    Setup Fails

*** Test Cases ***
Case1
    Should Be True    1<2

Case2
    Should Be True    2<1

*** Keywords ***
Setup Fails
    fail    Danger Will Robinson!

以上结果如下:

==============================================================================
Example                                                                       
==============================================================================
Case1                                                                 | FAIL |
Parent suite setup failed:
Danger Will Robinson!
------------------------------------------------------------------------------
Case2                                                                 | FAIL |
Parent suite setup failed:
Danger Will Robinson!
------------------------------------------------------------------------------
Example                                                               | FAIL |
Suite setup failed:
Danger Will Robinson!

2 critical tests, 0 passed, 2 failed
2 tests total, 0 passed, 2 failed
==============================================================================

【讨论】:

【参考方案2】:

您需要在文件夹中定义一个名为 __init__.robot 的文件。

该文件应该包含一个套件设置,它会在该文件夹中的任何其他文件之前运行。

您也可以嵌套这些文件。如果您有以下文件夹:

一种- -B -C

并且您将 __init__.robot 文件放在文件夹 A 中,它的套件设置将在文件夹 B 和 C 中的任何测试或任何初始化之前运行(一次)。

请注意,同样的技巧也适用于拆卸 - 只是反过来。

【讨论】:

【参考方案3】:

您可以使用 [标签] 功能

    *** Settings ***
Suite Setup    Setup Fails

*** Test Cases ***
Case1
    [Tags]  wip
    Should Be True    1<2

Case2
    [Tags]  wip
    Should Be True    2<1

*** Keywords ***
Setup Fails
    fail    Danger Will Robinson!

然后,当您运行机器人时,您可以使用包含 (-i) 和排除 (-e) 参数来运行或不运行您想要的任何标签。 所以你的脚本参数看起来像这样

-i run -e wip --outputdir <log dir> <robot dir>

你也可以像这样在包含/排除中有多个标签

-i run -e wipORbug etc...

您还可以在测试套件的设置中添加强制标签,将这些标签应用于每个单独的测试用例,如果您有多个测试套件并且只想测试一个,这很方便。

如果您有多个运行测试套件的文件,您可以使用包含 Suite Setup 和 Suite Teardown 关键字的 init.robot 文件。

【讨论】:

以上是关于机器人框架:为整个测试套件运行设置的主要内容,如果未能解决你的问题,请参考以下文章

如何在机器人框架中并行运行多个测试套件上的多个测试用例 | Python

迭代测试机器人框架

如何在机器人框架中访问套件中的所有测试

Pabot - 无法运行并行机器人框架测试

无法在 pycharm 中使用 pabot 运行并行机器人框架测试

如何在控制台错误时停止机器人框架套件的执行?