【问题标题】:Robot Framework: How to build teardown dynamicallyRobot Framework:如何动态构建拆解
【发布时间】: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 运算以返回最终的上层关键字状态?这将表明拆卸失败。

标签: robotframework


【解决方案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 循环中,我应该使用“运行关键字并返回状态”而不是“运行关键字”来避免可能的过早退出。我也应该和所有状态返回最终状态。但是,这会丢失关键字的返回值(但不是每个关键字都会返回值)。
猜你喜欢
  • 2017-04-30
  • 2014-03-29
  • 1970-01-01
  • 2019-02-02
  • 2016-04-26
  • 1970-01-01
  • 2019-06-04
  • 2016-12-31
  • 1970-01-01
相关资源
最近更新 更多