千万别跳坑:Robot Framwork 失败case截图、日志输出到指定目录

本文主要是介绍千万别跳坑: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 = 1433536577
        dirs = 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 = mtime
                        fail_dir = dir
        fail_dir = temp_path+fail_dir
        print ":::Return: ", fail_dir
        return 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截图、日志输出到指定目录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/489024

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh