利用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报告页面元素的更改的更多相关文章

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:将页面元素所包含的文本内容替换为背景图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Sword框架解析——知识采集流程页面初始化

    Sword框架解析——知识采集流程页面初始化 Sword框架解析知识采集流程页面初始化 问题解答流程采集新增页面初始化 1后台t_xt_gnzy表和BLH类 2BLH类的写法前台目录树代码 3登录系统 ...

  3. 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019

    演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...

  4. [转]谈NAND Flash的底层结构和解析

    这里我想以一个纯玩家的角度来谈谈关于NAND Flash的底层结构和解析,可能会有错误的地方,如果有这方面专家强烈欢迎指正. NAND Flash作为一种比较实用的固态硬盘存储介质,有自己的一些物理特 ...

  5. 对于redis底层框架的理解(一)

    近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initser ...

  6. 恋恋风辰 对于redis底层框架的理解(一)

    近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initser ...

  7. Java volatile 关键字底层实现原理解析

    本文转载自Java volatile 关键字底层实现原理解析 导语 在Java多线程并发编程中,volatile关键词扮演着重要角色,它是轻量级的synchronized,在多处理器开发中保证了共享变 ...

  8. 同人逼死官方系列!基于sddc 协议的SDK框架 sddc_sdk_lib 解析

    基于sddc 协议的SDK框架 sddc_sdk_lib 解析 之前在移植 libsddc 库的时候感觉官方 demo 太低效了( ̄. ̄),复制粘贴代码好累,而且写出一个BUG,其他复制的代码整个就裂 ...

  9. SSM框架整合(实现从数据库到页面展示)

    SSM框架整合(实现从数据库到页面展示) 首先创建一个spring-web项目,然后需要配置环境dtd文件的引入,环境配置,jar包引入. 首先让我来看一下ssm的基本项目配件.(代码实现) 1.首先 ...

随机推荐

  1. MySQL数据库、数据表和字段字符集查询、修改和配置

    一.设置编码 LINUX  修改vi/etc/my.cnf WINDOWS my.ini 在[client]下添加    default-character-set=utf8 在[mysqld]下添加 ...

  2. python修改文件后缀名

    修改文件后缀名 # -*- coding: utf-8 -*- import os # # 列出当前目录下所有的文件 # filedir = 'C:\\Users\\WT\\Desktop\\test ...

  3. 6.springboot----------JSR303校验

    JSR303校验(Java Specification Requests的缩写,意思是Java 规范提案) 有一个注解叫:@Validated  //数据校验 这是默认的↓ 这是你可以改的↓

  4. [lua]紫猫lua教程-命令宝典-L1-01-10. 自定义函数

    L1[function]01. 定义与调用函数 函数的定义 和概念 没什么可说的 lua的函数声明和调用是有先后顺序的  先声明后调用 函数就是变量的一种 所以可以自由的把函数在变量间相互赋值 不过注 ...

  5. SARS病毒

    每一道题目皆是一处美丽的风景: 何为科技的力量和程序的思维哦,在这暑假的编程之路上,我要好好地体验一番来嘞! 数学规律是:f(n)=2^(n-1)+4^(n-1).     //递推分析可得!具体过程 ...

  6. DFT 问答 II

    1. Boundary Scan A:Boundary scan 顾名思义,是附加在芯片I/O 周边的扫描测试链,它通过专门的测试端口(TAP)访问.在测试模式下,边界扫描链会接管功能逻辑,对I/O进 ...

  7. python接口自动化测试 - requests库的基础使用

    简单介绍 requests库简单易用的HTTP库 Get请求 格式: requests.get(url) 注意:若需要传请求参数,可直接在 url 最后的 ? 后面,也可以调用 get() 时多加一个 ...

  8. The Reason Why Cosmetic Airless Bottles Are Widely Used

    The contents of the Cosmetic Airless Bottles    can be isolated from the air, to prevent the product ...

  9. opencv:形态学操作-开闭操作

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  10. CI框架发送邮件(带附件)

    最近写了一个发送带附件的邮件,发邮件挺简单的,在我这里最重要的是遇到问题,哈哈哈哈 1.主要方法看代码 public function send_mail(){ $this->load-> ...