1. 简介

  截止到上一篇文章为止,框架基本完全搭建完成。那么今天我们要做什么呢????聪明如你的小伙伴或者是童鞋一定已经猜到了,都测试完了,当然是要生成一份高端大气上档次的测试报告了。没错的,今天宏哥就带领你们将这部分内容也集成到这个框架中。本文来介绍如何生成自动化测试报告,前面文章尾部提到了利用HTMLTestRunner.py来生成自动化测试报告。关于HTMLTestRunner不过多介绍,只需要知道是一个能生成一个HTML格式的网页报告就可以,其他的如果你特别感兴趣可以自己去搜索查询资料。我们需要在宏哥前边介绍的自动化框架里面继承一个报告输出,直接来看看效果。

2. 测试报告效果

2.1 测试报告文件

  我们从下图中,可以清楚地看到在test_report文件夹下生成的测试报告

2.2 浏览器预览效果

  因为生成的是.html文件,所以这里用浏览器打开我们看一下效果如下图:

2.3 实现

  这里我们报告输出代码写到了,负责执行测试套件TestRunner.py这个文件。相关代码如下:

TestRunner.py

2.3.1 代码实现:

2.3.2 参考代码:
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-12-25
@author: 北京-宏哥 QQ交流群:705269076
Project: 《一头扎进》系列之Python+Selenium自动化测试框架实战篇7 - 年底了还没升职加薪,年终奖全靠它了!!!
'''
# 3.导入模块
from automation_framework_demo.testsuits import HTMLTestReportCN
import os
import unittest
import time
from automation_framework_demo.framework.SendEmail import SendMail # 设置报告文件保存路径
report_path = os.path.dirname(os.path.abspath('.')) + '/test_report/' print('report_path'+ report_path)
# 获取系统当前时间
now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) # 设置报告名称格式
HtmlFile = report_path + now + "HTMLtemplate.html"
#fp = file(HtmlFile, "wb")
fp = open(HtmlFile, "wb") #用例路径
case_path = os.path.join(os.getcwd(), '')
print('case_path',case_path) # 构建suite
# suite = unittest.TestLoader().discover(case_path, "test_baidu_search.py", top_level_dir=None)
suite = unittest.TestLoader().discover(case_path, "baidu_search1.py", top_level_dir=None) if __name__ == '__main__':
#初始化一个HTMLTestRunner实例对象,用来生成报告
runner = HTMLTestReportCN.HTMLTestRunner(stream=fp, title=u"Python+Selenium自动化测试框架实战篇7项目演示测试报告", description=u"用例测试情况")
#开始执行测试套件
runner.run(suite)
# runner = unittest.TextTestRunner()
# runner.run(suite)
fp.close()
2.3.3 运行结果:

  运行代码后,控制台打印如下图的结果

2.3.4 测试报告预览

  测试报告用浏览器打开截图,在你项目文件路径下,找到这个HTML的报告,用本地浏览器打开。

  如何生成自动化测试报告就介绍到这里。

3. 测试报告模板插件

  宏哥这里为了方便,直接将测试报告的模板插件,直接放在了testsuits的文件下,如图:

  如果有洁癖的小伙伴或者童鞋们,可以自己建一个文件夹专门来存储这个模板插件也可以的,但是不要忘记了最重要的一条就是将其导入,否则可能会报找不到的错误哦!

4. 导入测试报告模板插件

  如何导入?其实很简单的,就像python导入其他模块一样。例如宏哥这里的导入方法如下:

  宏哥总结如下:

from  文件夹路径  import 插件名字.py

5. 执行所有测试用例

  除了上一篇那种找到文件夹,执行所有测试用例,我们还有别的方法执行所有测试用例吗?当然有,但是对测试用例的名字的命名有要求,其实也不是硬性要求,只不过是为了后边我们的正则表达式好写,这里命名就规范一些。

5.1 命名规则:

  所有测试用例的名字都以test开头,例如:test_login.py。

5.2 正则表达式:

  正则表达式:test*.py

5.3 代码实现:

5.4 参考代码:

# 构建suite
# suite = unittest.TestLoader().discover(case_path, "test_baidu_search.py", top_level_dir=None)
suite = unittest.TestLoader().discover(case_path, "test*.py", top_level_dir=None)

6. 小结

  好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。有问题加群交流讨论!!!

哎呀!!!忘记了,最后祝大家圣诞节快乐。。Merry Christmas!!!

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  不要忘记哦!!!

别忘了点 推荐 留下您来过的痕迹

《一头扎进》系列之Python+Selenium框架实战篇7 - 年底升职加薪,年终奖全靠它!Merry Christmas的更多相关文章

  1. 《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了

    1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了.从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的第一个自动化测试框架.这一篇,我 ...

  2. 《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,呵!这个框架有点意思啊

    1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到bas ...

  3. 《一头扎进》系列之Python+Selenium框架设计篇5 - 价值好几K的框架,哎呦!这个框架还真有点料啊!!!

    1. 简介 其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了.接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出 ...

  4. 《一头扎进》系列之Python+Selenium框架设计篇1-什么是自动化测试框架-价值好几K的框架,不看别后悔,过时不候

    1. 什么是自动化测试框架 在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的 ...

  5. 《一头扎进》系列之Python+Selenium框架设计篇2- 价值好几K的框架,不看白不看,看了还想看

    1. 简介 上一篇介绍了自动化框架的架构,今天宏哥就带领小伙伴或者童鞋们开始开工往这个框架里开始添砖加瓦.主要是介绍一个框架unittest单元测试框架和一种设计思想POM. 2. unittest单 ...

  6. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

  7. Python+Selenium框架设计篇之-什么是自动化测试框架

    1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式.平台执行脚 ...

  8. Python+Selenium框架设计篇之-什么是POM

    前面我们介绍了Python中的单元测试框架unittest,以后我们所有的测试类文件,都采用unittest来辅助我们进行debug和脚本开发.搞定了debug机制和确定了unittest来进行创建和 ...

  9. 《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

随机推荐

  1. Linux 下查看操作系统信息

    1.uname -a  可显示电脑以及操作系统的相关信息. 2.输入"cat /proc/version",说明正在运行的内核版本. 3.输入"cat /etc/issu ...

  2. leetcode-解题记录 1108. IP 地址无效化

    题目: 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". ...

  3. STL中的查找

    一.查找 1.头文件 #include <algorithm> 2.使用方法 1.binary_search:查找某个元素是否出现.O(logn) a.函数模板:binary_search ...

  4. jQuery获取地址url的参数

    例如:网址 http://localhost:26459/Master.aspx?5 $(function () { var url = location.search;   if (url.inde ...

  5. go 学习之字符串

    字符串 字符串是不可变值类型,内部⽤用指针指向 UTF-8 字节数组.默认值是空字符串 "".用索引号访问某字节,如 s[i], i不能是负数.不能⽤用序号获取字节元素指针,&am ...

  6. docker--数据持久化之Data Volume

    使用mysql为例 查看docker hub官方的mysql image 的dockerfile,有这一行:VOLUME /var/lib/mysql -v给volume创建别名 [root@loca ...

  7. C# goto学习

    如下代码: ; goto b;//goto语句用来控制程序跳转到某个标签的位置 a++; b: Console.WriteLine(a); Console.ReadKey(); 输出结果为:5,执行g ...

  8. activiti 流程部署的各种方式

    流程资源可以是各种类型的文件,在启动流程或流程实例运行过程中会被读取.下面介绍常用的流程资源. 一.流程资源 流程定义文件:扩展名为bpmn20.xml和bpmn; 流程定义的图片:用BPMN2.0规 ...

  9. elasticsearch 父子关系

    ElasticSearch 中的Parent-Child关系和nested模型是相似的, 两个都可以用于复杂的数据结构中,区别是 nested 类型的文档是把所有的实体聚合到一个文档中而Parent- ...

  10. Codeforces 1178E

    题意:给你一个长度为n的字符串,只包含a, b, c3种字符,字符串中相邻字符一定不同,问是否存在一个长度为n / 2(向下取整)的子序列是回文的,有就输出. 思路:相邻的字符一定不同,并且一共只有3 ...