Robot Framework 如何动态构建 Teardown 后置清理步骤?
Robot Framework 动态分步执行Teardown的解决方案
方案1:使用内置Add Cleanup关键字(推荐,RF 4.0及以上版本支持)
这是最贴合需求的原生实现,逻辑是每完成一个测试步骤后,主动注册对应的清理动作。所有注册的清理动作会在测试用例结束时按先进后出的顺序自动执行,未完成的测试步骤对应的清理不会被注册,自然不会执行,完全符合需求。
示例代码:
*** Settings *** Library Collections *** Test Cases *** Sample Test1 # 执行测试步骤1,成功后注册对应清理 Log Test Step1 Add Cleanup Log Cleanup Step1 # 执行测试步骤2,成功后注册对应清理 Log Test Step2 Add Cleanup Log Cleanup Step2 # 执行测试步骤3,成功后注册对应清理 Log Test Step3 Add Cleanup Log Cleanup Step3
如果测试执行到步骤2时失败,此时仅注册了步骤1的清理动作,Teardown阶段只会执行步骤1的清理,不会涉及后续未执行步骤的清理逻辑。
方案2:自定义清理遍历关键字(兼容RF 4.0以下旧版本)
如果使用的RF版本不支持Add Cleanup,可以自己维护清理动作列表,在Teardown阶段遍历执行即可,不需要处理Run Keywords要求的AND分隔符问题:
*** Settings *** Library Collections *** Test Cases *** Sample Test1 ${Cleanup KWS}= Create List # 步骤1完成后加入清理列表 Log Test Step1 Append To List ${Cleanup KWS} Log Cleanup Step1 # 步骤2完成后加入清理列表 Log Test Step2 Append To List ${Cleanup KWS} Log Cleanup Step2 # 步骤3完成后加入清理列表 Log Test Step3 Append To List ${Cleanup KWS} Log Cleanup Step3 [Teardown] Run All Cleanups @{Cleanup KWS} *** Keywords *** Run All Cleanups [Arguments] @{cleanup_kws} # 倒序执行清理,和操作顺序相反,符合常规资源释放逻辑 ${reversed_kws}= Reverse List ${cleanup_kws} return_clone=True FOR ${kw} IN @{reversed_kws} # 单个清理失败不影响后续清理执行 Run Keyword And Continue On Failure ${kw} END
原写法问题说明
你原来的思路是可行的,但Run Keywords要求参数必须严格按照关键字1 [参数] AND 关键字2 [参数] AND ...的格式传递,需要手动把AND插入到每两个清理关键字的参数之间,实现起来不如上述两个方案简洁易维护。
内容的提问来源于stack exchange,提问作者Amit Tendulkar
相关产品推荐
相关产品推荐

