千万别跳坑: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

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.