RIDE 屏蔽 INFO 级别日志输出
在自动化测试项目中,若测试内容涉及软硬件且用例复杂,每个用例执行可能产生数万条 INFO 级别日志。这不仅影响测试人员查看日志的效率,也会拖慢用例执行速度。通过修改 RIDE 源码,可以选择性控制日志输出级别,从而提升效率。
1、用例示例
编写一个简单的测试用例,包含变量赋值、Log 输出及错误日志模拟。
(此处为日志输出示例截图)
2、更改日志输出级别
正常情况下,Log 函数默认输出 INFO 级别日志。在大型测试项目中,过多的 INFO 输出会影响查找和执行效率。可以通过屏蔽 INFO 级别来优化。
通过分析 RIDE 启动命令中的参数,发现日志相关文件包括 TestRunnerAgent.py 和对应的库 testrunner。在源码 robotide\contrib\testrunner\testrunner.py 中,存在 get_message_log_level 函数用于获取并设置最小日志级别,默认值为 INFO。
Robot Framework 的日志级别定义如下:
LEVELS = {
'NONE': 6,
'FAIL': 5,
'ERROR': 4,
'WARN': 3,
'INFO': 2,
'DEBUG': 1,
'TRACE': 0,
}
将 get_message_log_level 函数中的 min_log_level_number 设置为 WARN,即可屏蔽 INFO 及以下级别的输出。修改后的逻辑如下:
def get_message_log_level(command):
min_log_level_number = LEVELS['WARN'] # 修改为 WARN 以屏蔽 INFO
if '-L' in command:
switch = '-L'
elif '--loglevel' in command:
switch = '--loglevel'
else:
return min_log_level_number
i = command.index(switch)
if len(command) == i + 1: # 修正索引判断
return min_log_level_number
level = command[i+1].upper().split(':')[0]
return LEVELS.get(level, min_log_level_number)
修改后,仅 WARN 及以上级别的日志会输出。
(此处为修改后日志输出示例截图)
注意:此时原有的 Log 关键字(默认为 INFO 级别)将无法显示。需要在 Log 关键字中显式指定级别为 WARN 或更高,才能正常输出。
(此处为 Log 关键字级别设置示例截图)
即:设置最小日志级别后,所有 Log 函数的级别必须不低于该设定值,否则无法输出。
如需定制日志输出,可修改 TestRunnerAgent.py 文件,或自定义日志输出类。
3、说明
本方案基于以下环境验证:
- Python 2.7.13
- RIDE 1.5.2.1


