BeautifulReport底层框架的解析以及html报告页面元素的更改
利用BeautifulReport 模块生成html报告
import BeautifulReport as br#引入包,之后设置一下别名
br = br.BeautifulReport(test_suit)#将用例集加入到对象中
br.report(description="beautifulreport",filename="brtest",log_path="")#执行用例统计结果,并生成测试报告
#filename是测试报告的名称,log_path可以指定测试报告的存储目录,这个参数可选
如上操作report方法实现了用例的执行、用例执行结束的结果统计、生成测试报告等操作。
接下来就通过代码的跟踪来了解一下BeautifulReport 底层结构,便于我们了解代码,以后可以根据自己的实际需求来更改生成的报告。注意:读如下代码时一定要配合着底层代码一起阅读
1、self.suit.run
因为测试用例所在的类继承了unittest.TestCase,所以这里所调用的run方法是TestCase类中的run()方法,进入方法
其中testPartExecutor是用来执行测试用例的具体方法的
addSuccess当用例断言校验成功是会执行addSuccess方法,因为result对象是run()方法的参数,调用run的方法所属类继承了ReportTestResult类,而ReportTestResult最后又继承了TestResult类,所以这个addSuccess方法在TestResult这个类当中,但是因为ReportTestResult重写了TestResult中addSuccess的这个方法,所以最后跟踪到的是ReportTestResult类。
这个方法执行之后呢,继续执行stopTest()方法,这个方法也被ReportTestResult类重写
self.result_list.append这个方法将测试用例执行结果的信息写入到result_list中
可以通过get_testcase_property这个方法增加属性信息,最后向result_list列表中增加属性值,也可以更改最初传过来的参数-(TestCase)测试用例实体类test的内容以便获取test的信息之后操作所需要的属性信息
2、self.stopTestRun
所有测试用例执行完成之后执行stopTestRun方法,方法体中有一个str(MakeResultJson(item))方法,首先实例化MakeResultJson类,将item数据加入这个类中,之后将对象转为字符串,通过str方法,又因为MakeResultJson里面重写了__repr__方法,所以在对象转为字符串是,str(MakeResultJson(item))先调用的str,之后str内部调用的__repr__,又因为MakeResultJson重写了__repr__,所以调用的是最新的__repr__方法
如上的这个方法keys的集合就是显示在html页面上面的关键字信息,所以可以通过更改此方法,从而更改html页面的元素信息
3、self.output_report()
BeautifulReport底层框架的解析以及html报告页面元素的更改的更多相关文章
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:将页面元素所包含的文本内容替换为背景图
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Sword框架解析——知识采集流程页面初始化
Sword框架解析——知识采集流程页面初始化 Sword框架解析知识采集流程页面初始化 问题解答流程采集新增页面初始化 1后台t_xt_gnzy表和BLH类 2BLH类的写法前台目录树代码 3登录系统 ...
- 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019
演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...
- [转]谈NAND Flash的底层结构和解析
这里我想以一个纯玩家的角度来谈谈关于NAND Flash的底层结构和解析,可能会有错误的地方,如果有这方面专家强烈欢迎指正. NAND Flash作为一种比较实用的固态硬盘存储介质,有自己的一些物理特 ...
- 对于redis底层框架的理解(一)
近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initser ...
- 恋恋风辰 对于redis底层框架的理解(一)
近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initser ...
- Java volatile 关键字底层实现原理解析
本文转载自Java volatile 关键字底层实现原理解析 导语 在Java多线程并发编程中,volatile关键词扮演着重要角色,它是轻量级的synchronized,在多处理器开发中保证了共享变 ...
- 同人逼死官方系列!基于sddc 协议的SDK框架 sddc_sdk_lib 解析
基于sddc 协议的SDK框架 sddc_sdk_lib 解析 之前在移植 libsddc 库的时候感觉官方 demo 太低效了( ̄. ̄),复制粘贴代码好累,而且写出一个BUG,其他复制的代码整个就裂 ...
- SSM框架整合(实现从数据库到页面展示)
SSM框架整合(实现从数据库到页面展示) 首先创建一个spring-web项目,然后需要配置环境dtd文件的引入,环境配置,jar包引入. 首先让我来看一下ssm的基本项目配件.(代码实现) 1.首先 ...
随机推荐
- 图的dfs遍历模板(邻接表和邻接矩阵存储)
我们做算法题的目的是解决问题,完成任务,而不是创造算法,解题的过程是利用算法的过程而不是创造算法的过程,我们不能不能陷入这样的认识误区.而想要快速高效的利用算法解决算法题,积累算法模板就很重要,利用模 ...
- X-Forwarded-For注入漏洞过程记录
一.题目地址 https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe 二.使用工具 FireFox浏览 ...
- flutter web 配置环境及运行(windows)
此下 操作 都是基于 windows 一, 将镜像添加到 用户环境变量中 由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用 ...
- python"TypeError: 'NoneType' object is not iterable"错误解析
尊重原创博主,原文链接:https://blog.csdn.net/dataspark/article/details/9953225 [解析] 一般是函数返回值为None,并被赋给了多个变量. 实例 ...
- my97日期控件弹出位置显示异常
使用my97日期选择控件的时候,如果整个页面是有滚动条的,根据触发显示日期的控件的父控件的position不同会显示不同的情况 1.position不为fixed则滑动滚动条,显示的日期层不会出现异常 ...
- [Vue源码]一起来学Vue双向绑定原理-数据劫持和发布订阅
有一段时间没有更新技术博文了,因为这段时间埋下头来看Vue源码了.本文我们一起通过学习双向绑定原理来分析Vue源码.预计接下来会围绕Vue源码来整理一些文章,如下. 一起来学Vue双向绑定原理-数据劫 ...
- bugku 细心
打开链接会看到提醒404 显示不能访问 然后用御剑 扫描一下 然后会发现另一个 网址 然后打开 发现 有一个/result.php然后改一下 网址会发现 另一个网页 然后利用提示 将链接的后缀名改成? ...
- 数星星 Stars
问题 A: 数星星 Stars 时间限制: 1 Sec 内存限制: 128 MB[命题人:admin] 题目描述 输入 第一行一个整数 N,表示星星的数目: 接下来 N 行给出每颗星星的坐标,坐标用 ...
- 多表连接面试题:ERROR:Not unique table/alias
class_info id class_name 2 s204 5 s205 1 s207 7 s203 match_info id host_id guest_id match_time mat ...
- django+vue 基础框架 :vue
<template> <div> <p>用户名:<input type="text" v-model="name"&g ...