本文主要是介绍千万别跳坑:Robot Framwork 失败case截图、日志输出到指定目录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
自从接触RFS开始,就幻想着能把robot 中失败case的日志输出到指定文件夹中,这两天心血来潮,想去“研究一把”。我的思路是:robot中有判断case是否成功的关键字:Run Keyword If Test Failed,根据这个值来判断->case失败了,就去这个目录下取log文件:C:\Users\Administrator\AppData\Local\Temp\RIDE123.d,并且进行截图,
图片名称以case的名称来命名:Take Screenshot ${image_path}\\${TEST_NAME}.jpg;瞬间感觉有点"高大上"....
于是马上开始编码,突然发现Temp下面有好几个RIDE12xxx.d的文件夹,而且都是robot运行时产生的,于是想进行文件夹模糊查询:先获取Temp下面的所有机文件列表,然后遍历
文件名称,找出以RIDE开头的文件夹,并且找出最近被修改的那个(之前试过,这个文件夹不能被删除,否则robot无法执行case,得重启),然后就是代码实现:
def get_fail_case_log_dir(self, temp_path):time_before = 1433536577dirs = os.listdir(temp_path)fail_dir = ""for dir in dirs:if dir.startswith("RIDE"):if os.path.isdir(temp_path+dir):# 获取log文件的修改时间mtime = os.path.getmtime(temp_path+dir+"\log.html")# 取最新修改的那个文件夹if mtime >= time_before:time_before = mtimefail_dir = dirfail_dir = temp_path+fail_dirprint ":::Return: ", fail_dirreturn fail_dir拷贝temp下面的日志文件:def get_log_file(self, tempPath, newFile, newPath, newFileName):
oldFile = self.get_fail_case_log_dir(tempPath)+"\\log.html"
# 目标路径不存在,需要自动创建
if os.path.exists(newPath) is False:
os.mkdir(newPath)
# 删除已存在的相同文件
newName = newPath+newFileName+".html"
if os.path.exists(newName):
print ":::File [", newName, "] existed, remove it!!"
os.remove(newName)
os.chdir(tempPath)
os.chdir(self.get_fail_case_log_dir(tempPath))
# 拷贝文件
try:
shutil.copy(oldFile, newFile)
except Exception, e:
print ":::Exception occured:", e.message
# 重命名
os.rename(newFile, newName)感觉快大功告成了,赶紧用robot去调用~
但结果告诉我:晴天霹雳,每次获取的都是上一次的日志,本次的无法获取,我还天真的到群里面问是不是有缓存之类的....
哎,继续调试一下看看,日志究竟是什么时候生成的。事实是介样的:只有等每次case执行结果显示Pass/Fail的时候,日志才会更新,而执行Run Keyword If Test Failed 这个关键字还属于case运行的范畴,在日志产生之前就已经执行了,所以才每次都取不到最新的日志。
还有补救办法么?我试着另外增加一个case:专门用来取日志文件。结果又告诉我:执行多个case的时候,日志不是每执行完一个,就更新一次,
而是等所有case都执行完了,日志才更新,感觉今天做的事情原来都是浪费时间,根本达不到目的,呜呜呜。。。。。。难道真的没办法嘛?有!!
在run tab下面的argument后面加上-d D:\fail_screenshots就好了,以后产生的日志都会在这里:
原来转那么大的弯去实现,这么一句话就搞定了。不过还是有收获,总结一下:
1、robot的日志文件是在执行动作退出后产生的
2、执行多个case的时候,并非每结束一个case就刷新一次日志,而是所有case都结束后才产生的
后面的同学千万别踩这个坑了。。。。。。
这篇关于千万别跳坑:Robot Framwork 失败case截图、日志输出到指定目录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!