Robot Framework:如何动态构建拆解

Robot Framework: How to build teardown dynamically

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

我希望像下面这样的东西能工作(不幸的是 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}

如果可以的话,测试用例的执行可能会更有效率(如果中间测试失败)and/or我可以避免在拆解阶段出现不必要的失败。

是否有任何其他优雅的方式来支持上述所需的行为?

您可以通过在 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}