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-Test setup Teardown 具体到测试用例