如何配置Robot Framework默认不因失败终止执行,无需内置关键字?
如何让Robot Framework执行时不因失败终止(无需逐个添加关键字)
当然可以!如果你不想在每个关键字或测试用例里手动套Run Keyword and Continue on Failure这类关键字,有几种全局级别的方法能实现让测试执行不因为失败就停住,分两种场景给你说明:
场景1:测试套件中,单个用例失败后继续执行其他用例
Robot Framework 默认行为就是如此——除非你主动加了--exitonfailure命令行参数。所以只要别用这个参数,哪怕某个用例跑失败了,后面的用例该咋跑咋跑。
如果之前不小心加了这个参数,执行时去掉就行:
robot your_test_suite.robot
场景2:单个测试用例内部,步骤失败后继续执行后续步骤
这应该是你最关心的需求——不用给每个步骤都套关键字,让用例里的所有步骤哪怕失败了也能继续往下走。Robot Framework本身没有直接的配置开关,但可以通过两种无侵入的方式实现:
方法1:用自定义监听器(推荐,完全不改动业务代码)
你可以写个简单的Python监听器,拦截关键字失败的事件,强制让测试用例继续执行后续步骤。
- 创建一个名为
ContinueOnFailureListener.py的文件,内容如下:
class ContinueOnFailureListener: ROBOT_LISTENER_API_VERSION = 3 def keyword_failed(self, keyword, result): # 告诉Robot Framework:就算当前关键字失败,也继续执行后面的步骤 result.continue_on_failure = True
- 执行测试时,通过
--listener参数加载这个监听器就行:
robot --listener ContinueOnFailureListener.py your_test_suite.robot
这样一来,所有测试用例里的任何关键字失败后,用例都会继续跑完剩余步骤,完全不用修改你的业务测试代码。
方法2:全局关键字包装(适合统一管理的项目)
如果你不想用Python写监听器,也可以在资源文件里定义一个通用的包装关键字,然后让所有测试用例用这个关键字来调用业务步骤。不过这种方法需要稍微改下测试用例的结构,胜在不用写额外代码:
- 在你的资源文件(比如
CommonResources.robot)里定义:
*** Keywords *** Execute And Continue [Arguments] ${keyword} @{args} Run Keyword And Continue On Failure ${keyword} @{args}
- 然后在测试用例里,用这个关键字代替直接调用业务关键字:
*** Test Cases *** Sample Login Test Execute And Continue Open Browser https://example.com chrome Execute And Continue Input Text username_field test_user Execute And Continue Click Button login_button
这种方法虽然需要修改测试用例,但可以统一管理错误处理逻辑,后续要调整也方便。
内容的提问来源于stack exchange,提问作者Albert Montes Cobo
相关产品推荐
相关产品推荐

