如何将Robot Framework内置赋值关键字的日志级别降至DEBUG/TRACE?
调整Robot Framework赋值关键字的日志级别
我之前也碰到过类似的需求——不想让赋值操作的INFO日志占满日志输出,这里分享几个可行的解决思路:
方法1:自定义赋值关键字,手动控制日志级别
最简单的方式是封装一个自己的赋值关键字,把日志输出级别改成DEBUG或TRACE,替代默认的=语法:
*** Keywords *** Assign Variable (Debug Log) [Arguments] ${value} # 以DEBUG级别记录赋值操作 Log ${xyz} = "${value}" DEBUG # 返回变量值完成赋值 [Return] ${value}
在测试用例里这样用:
*** Test Cases *** Demo Test ${xyz} Assign Variable (Debug Log) "hello"
这样赋值的日志就只会在DEBUG级别下显示了。
方法2:用监听器修改日志级别(更灵活)
如果不想修改所有用例的赋值语法,可以写一个Robot监听器,自动识别赋值类的日志消息并调整其级别:
创建一个Python文件AssignmentLogAdjuster.py:
class AssignmentLogAdjuster: ROBOT_LISTENER_API_VERSION = 3 def log_message(self, message): # 判断是否是赋值操作的日志(匹配`${xxx} = "xxx"`这类格式) if "${" in message.message and "=" in message.message: # 将日志级别改为DEBUG,也可以改成TRACE message.level = "DEBUG"
运行测试时加载这个监听器:
robot --listener AssignmentLogAdjuster.py your_test_suite.robot
这个方法不需要修改任何测试用例代码,就能批量把所有赋值操作的日志降到DEBUG级别。
方法3:修改Robot Framework源码(不推荐)
如果愿意修改源码的话,可以找到赋值日志的输出位置调整级别:
- 找到Robot安装目录下的
robot/running/keywords.py文件 - 定位到
AssignmentRunner类里的_log_assignment方法 - 把原本的
logger.info(...)改成logger.debug(...)或logger.trace(...)
不过这个方法有个明显缺点:Robot版本升级后修改会被覆盖,除非你自己维护分支,所以一般不推荐。
内容的提问来源于stack exchange,提问作者randobuzzer17
相关产品推荐
相关产品推荐

