我正在使用机器人框架的Requests库将文件上传到服务器.文件RequestsKeywords.py有一行
logger.info('Post Request using : alias=%s, uri=%s, data=%s, headers=%s, files=%s, allow_redirects=%s '
% (alias, uri, dataStr, headers, files, redir))
这会在我的日志文件中打印出请求中的上传文件的全部内容.现在我可以通过更改日志级别来删除此日志,但是,我的目标是能够查看日志但只是将其截断为80个字符,因此我不会浏览十六进制值的行.知道如何做到这一点?
最佳答案 解决方案是创建一个包装器方法,该方法将临时禁用日志记录,并在完成后启用它.
流程是 – 获取RequestsLibrary的实例,使用参数“ERROR”调用RF的Set Log Level
(因此,如果需要,至少会出现错误),调用原始关键字,将日志级别设置回原来的状态,然后返回结果.
这是它在python中的样子:
from robot.libraries.BuiltIn import BuiltIn
def post_request_no_log(*args, **kwargs):
req_lib = BuiltIn().get_library_instance('RequestsLibrary')
current_level = BuiltIn().set_log_level('ERROR')
try:
result = req_lib.post_request(*args, **kwargs)
except Exception as ex:
raise ex
finally:
BuiltIn().set_log_level(current_level)
return result
同样,在robotframework语法中:
Post Request With No Logging
[Documentation] Runs RequestsLibrary's Post Request, with its logging surpressed
[Arguments] @{args} &{kwargs}
${current level}= Set Log Level ERROR
${result}= Post Request @{args} &{kwargs}
[Return] ${result}
[Teardown] Set Log Level ${current level}
python的版本速度要快几毫秒 – 不需要解析&匹配RF语法中的文本,在大量使用时可能会加起来.