Robot Framework:如何动态构建拆解

Posted

技术标签:

【中文标题】Robot Framework:如何动态构建拆解【英文标题】:Robot Framework: How to build teardown dynamically 【发布时间】:2022-01-07 21:41:20 【问题描述】:

我正在尝试在我的测试用例中动态构建拆卸操作。例如对于测试用例中的每一步,我都有相应的拆卸步骤。因此,根据测试用例失败的时间点,我试图在拆解中只运行那些许多干净的操作。

我期待类似下面的东西可以工作(不幸的是Run Keywords需要在语法中特别提到AND

*** Settings ***
Library    Collections

*** Test Cases ***
Sample Test1
    $Cleanup KWS=    Create List    Log    Cleanup Step1
    Log    Test Step1
    $Cleanup KW=    Create List    Log    Cleanup Step2    AND
    $Cleanup KWS=    Combine Lists    $Cleanup KW    $Cleanup KWS
    Log    Test Step2
    $Cleanup KW=    Create List    Log    Cleanup Step3    AND
    $Cleanup KWS=    Combine Lists    $Cleanup KW    $Cleanup KWS
    Log    Test Step3

    [Teardown]    Run Keywords    @Cleanup KWS

如果上述情况可行,测试用例执行可能会更有效(如果测试在中间失败)和/或我可以避免在拆卸阶段出现不必要的失败。

还有其他优雅的方式来支持上述期望的行为吗?

【问题讨论】:

您是否尝试过使用 for 循环解析 $Cleanup KWS 并使用“运行关键字”? 谢谢@Pekka。我想我需要使用“运行关键字并返回状态”来避免潜在的过早退出?此外,我应该对状态进行 AND 运算以返回最终的上层关键字状态?这将表明拆卸失败。 【参考方案1】:

您可以通过在 Keywords 部分中定义每个拆卸步骤来做到这一点:

*** Keywords ***
Teardown_Step_1
    log to console    Teardown for step 1

Teardown_Step_2
    log to console    Teardown for step 2

Teardown_Step_3
    log to console    Teardown for step 3

Execute teardown steps
    [Documentation]    Execute a list of keywords
    [Arguments]  @keywords
    [Return]     @result

    @result=   create list
    FOR  $keyword  IN  @keywords
        $keyword result=  Run keyword  $keyword
        Append to list  $result  $keyword result
    END

然后在测试中你可以像这样使用上面的关键字:

Sample Test1

    @teardown_list =   create list

    Log    Test Step1
    append to list    $teardown_list     Teardown_Step_1
    Log    Test Step2
    append to list    $teardown_list     Teardown_Step_2
    Log    Test Step3
    append to list    $teardown_list     Teardown_Step_3

    [Teardown]    Execute teardown steps    @teardown_list

【讨论】:

感谢@Dan Constantinescu。我相信,在 for 循环中,我应该使用“运行关键字并返回状态”而不是“运行关键字”来避免可能的过早退出。我也应该和所有状态返回最终状态。但是,这会丢失关键字的返回值(但不是每个关键字都会返回值)。

以上是关于Robot Framework:如何动态构建拆解的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Robot Framework 处理动态元素

Robot Framework-Test setup Teardown 具体到测试用例

您如何在 Robot Framework 中编写具有多个标识符的动态元素?

如何在 Robot Framework 中编写循环

Robot Framework 如何获取文本项

Robot Framework 资源和变量文件