Selenium:HTML测试报告

news2024/9/24 13:23:00

自动化测试过程中,获得用例的执行结果后,需要有具象化、简洁明了的测试结果,比如:用例执行时间、失败用例数、失败的原因等,这时候,就需要用到测试报告。

HTML测试报告是python语言自带的单元测试框架,其扩展的HTMLTestRunner模块可用于生成易于使用的HTML测试报告。

1、HTMLTestRunner下载

下载地址:HTMLTestRunner - tungwaiyip's software

下载完成后,将下载的文件保存到C盘的\Python35\Lib目录下(可以通过如下命令获取python安装目录):

  • ①进入cmd命令行
  • ②输入python
  • ③输入import sys
  • ④输入print(sys.path)
1 C:\Users\dell>python
2 Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
3 Type "help", "copyright", "credits" or "license" for more information.
4 >>> import sys
5 >>> print(sys.path)
6 ['', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\python35.zip', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\DLLs',
  'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\lib', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35', 'C:\\Users\\dell\\
  AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages']

2、修改HTMLTestRunner文件

因为HTMLTestRunner是基于python2开发的,为了使其支持python3的环境,需要对其中的部分内容进行修改,修改后的内容如下:

 1 # HTMLTestRunner修改内容
 2 # 第94行
 3 import io
 4 # 第539行
 5 self.outputBuffer = io.StringIO()
 6 # 第631行
 7 print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
 8 # 第642行
 9 if not cls in rmap:
10 # 第766行
11 uo = o
12 # 第772行
13 ue = e

3、python文件执行与调用

①python文件的后缀为.py

②py文件既可以用来执行,就像一小段程序,也可以用来作为模块被导入

③在python中导入模块一般用import

代码如下:

 1 from selenium import webdriver
 2 import unittest
 3 import time
 4 
 5 class MyTest(unittest.TestCase):
 6     def setUp(self):
 7         self.driver = webdriver,Chrome("F:\安装工具\python\chromedriver.exe")
 8         self.driver.maximize_window()
 9         self.driver.implicitly.wait(10)
10         self.base_url = "http://www.baidu.com"
11 
12     def test_baidu(self):
13         driver = self.driver
14         driver.get(self.base_url + "/")
15         driver.find_element_by_id("kw").clear()
16         driver.find_element_by_id("kw").send_key("unittest")
17         driver.find_element_by_id("su").click()
18         time.sleep(2)
19         title = assertEqual(title,"unittest_百度搜索")
20 
21     def tearDown(self):
22         self.driver.quit()
23 
24 if __name__ == "__main__":
25     unittest.main()

4、HTMLTestRunner测试报告

以上面的test_baidu.py文件为例子,生成HTMLTestRunner测试报告,代码如下:

1 from selenium import webdriver
 2 import unittest
 3 from HTMLTestRunner import HTMLTestRunner
 4 
 5 class Baidu(unittest.TestCase):
 6     def setUp(self):
 7         self.driver = webdriver.Chrome("F:\安装工具\python\chromedriver.exe")
 8         self.driver.implicitly_wait(10)
 9         self.base_url = "http://www.baidu.com/"
10 
11     def test_baidu_search(self):
12         driver = self.driver
13         driver.get(self.base_url)
14         driver.find_element_by_id("kw").send_key("HTMLTestRunner")
15         driver.find_element_by_id("su").click()
16 
17     def tearDown(self):
18         self.driver.quit()
19 
20 
21 if __name__ == "__main__":
22     baidu = Baidu("test_baidu_search")
23     testunit = unittest.TestSuite()
24     testunit.addTest(baidu)
25 
26     # 定义报告存放路径
27     fp = open('./result.html', 'wb')
28     # 定义测试报告
29     runner = HTMLTestRunner(stream=fp,
30                         title='百度搜索测试报告',
31                         description= '用例执行情况:')
32     runner.run(testunit) #运行测试用例
33     fp.close() #关闭报告文件

代码简析:

  • ①将HTMLTestRunner模块用import导入
  • ②通过open()方法以二进制写模式打开当前目录下的result.html,如果没有则自动创建该文件
  • ③调用HTMLTestRunner模块下的HTMLTestRunner类,stream指定测试报告文件,title用于定义测试报告的标题,description用于定义测试报告的副标题
  • ④通过HTMLTestRunner的run方法运行测试套件中所组装的测试用例,最后通过close()关闭测试报告文件

以上为方便展示写的例子,没有太多实际意义,具体的还是需要在工作中使用实践,关于unittest框架,后续会慢慢介绍。。。

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。未来的你肯定会感谢现在拼命的自己!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

等保各项费用支出明细

等保收费主要依据文件: 等保工作的定级指南文件_luozhonghua2000的博客-CSDN博客 Q7:做等级保护要多少钱? 答:开展等级保护工作主要包含:规划费用、建设或整改费用、运维费用、测评费用等,具体费用因各单位现状、保护对象承载业务功能、重要程度、所在地区等差异较大。 …

Input事件在应用中的传递(一)

Input事件在应用中的传递(一) hongxi.zhu 2023-4-25 前面我们已经梳理了input事件在native层的传递,这一篇我们接着探索input事件在应用中的传递与处理,我们将按键事件和触摸事件分开梳理,这一篇就只涉及按键事件。 一、事件的接收 从前面的…

Kubernetes(k8s)概念介绍

文章目录 1. k8s概述和特性2. k8s架构组件3. k8s核心概念 1. k8s概述和特性 K8s是一个开源的用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署,规划,更新,维护…

R语言 | 程序的流程控制

目录 一、if语句 1.1 if语句的基本操作 1.2 if...else语句 1.3 if语句也可有返回值 1.4 if...else if...else if...else 1.5 嵌套式if语句 二、递归式函数的设计 三、向量化的逻辑表达式 3.1 处理向量数据if...else的错误 3.2 ifelse()函数 四、switch语句 五、for循…

塔望3W消费战略全案丨窄赛道,高增长 普麦尔知己精酿,掘金中国啤酒利基市场

普麦尔 知己精酿 客户:上海麦仕醇啤酒有限公司 品牌:普麦尔 purmalz beer 服务:3W消费战略 品牌全案 掘金中国啤酒利基市场 精酿啤酒(Craft Beer)的概念最早起源于美国。通常与传统的工业啤酒形成较大的反差,精酿最早的称呼 …

C learning_10 (函数的嵌套调用和链式访问、函数的声明和定义、函数递归)

目录 函数的嵌套调用和链式访问 嵌套调用 函数可以嵌套调用,可以嵌套定义吗? 链式访问 函数的声明和定义 声明 定义 函数递归 递归的两个必要条件 函数的嵌套调用和链式访问 嵌套调用 函数嵌套调用指的是在一个函数中调用另外一个函数&#xf…

OpenSSH升级版本

项目被扫出openssh有严重漏洞,因此要升级openssh到最新版本 1、为防止安装失败,无法用ssh做远程连接,因此先安装telnet防一手 yum -y install telnet*systemctl enable telnet.socketsystemctl start telnet.socket注:安全文件关…

【星戈瑞】脂溶性CY5.5马来酰亚胺Cyanine5.5 maleimide

脂溶性CY5.5马来酰亚胺是一种荧光染料,其分子中含有马来酰亚胺结构,结构中的共轭体系赋予其良好的光学性质。该染料在红外区域有较强的吸收峰,具有较高的荧光量子产率和较长的荧光寿命,因此被应用于细胞和生物分子的荧光标记和成像…

cleanmymac正式版mac电脑清理软件

电脑清理软件在我们的电脑使用过程中是非常实用便捷的清理软件.当电脑使用了一段时间内,电脑就会产生各种各样的垃圾文件,比如说残留的注册表或者无效的注册表,系统碎片以及毫无用处的文件等,这些的存在将会极大程度地拖慢电脑的运行速度,而你删除的话可能会删除本不能删除的文…

解锁新技能《Java绘制2D图形验证码方法》

一、常见的图形验证码有如下三种: 字母数字混合(干扰线);纯数字(干扰线);纯字母(干扰线); 二、示例图如下: 三、案例代码 问题一:绘…

LC-2106. 摘水果(滑动窗口)

2106. 摘水果 难度困难78 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 &#xff0c…

C语言动态内存管理与文件操作:打造高效通讯录

本篇博客会讲解如何使用C语言实现一个通讯录。实现通讯录的过程中,会大量用到C语言的知识点,包括但不限于:函数、自定义类型、指针、动态内存管理、文件操作,这些知识点在我的其他博客中都有讲解过,欢迎大家阅读&#…

进程及进程管理

Linux基础 提示:个人学习总结,仅供参考。 一、Linux系统部署 二、服务器初始化 三、文件和用户管理 四、用户的权限 五、进程及进程管理 提示:文档陆续更新整理 进程及进程管理 Linux基础一、进程简介(一)进程三问…

面向万物智联的应用框架的思考和探索(上)

原文:面向万物智联的应用框架的思考和探索(上),点击链接查看更多技术内容。 应用框架,是操作系统连接开发者生态,实现用户体验的关键基础设施。其中,开发效率和运行体验是永恒的诉求&#xff0c…

代码命名规范是真优雅呀!代码如诗

日常编码中,代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图,也是一项必备的能力。那它们有什么规律呢? Java项目的代码结构,能够体现它的设计理念。Java采用长命名的方式来规范类的命名,能够自己表达…

网络安全怎么学,才不会成为脚本小子?

一,怎么入门? 1、Web 安全相关概念(2 周) 了解网络安全相关法律法规 熟悉基本概念(SQL 注入、上传、XSS、CSRF、一句话木马等)。 通过关键字(SQL 注入、上传、XSS、CSRF、一句话木马等&#…

RK3588 lt16911uxc hdmi in

我们的单板需要四路HDMI IN,其中一路使用了rk3588自带的hdmi rx,另外三路通过LT6911UXC 转接芯片,实现了三路hdmi in 使用了rk3588的DPHY0,DPHY1以及DCPHY0 设备树修改如下: /* DCPHY0 */ &csi2_dcphy0 { status = "okay"; ports { #addres…

【Errors】【计算机图形学】A-SDF复现的一点纠正记录

ICCV 2021的工作A-SDF,在跑的过程中可能是一些版我Run了这篇工作代码的Reconstruction,然后出现了一点小小的错误,记录如下。 问题一:对数据做直接修改导致出错(可能是不同的pytorch版本导致的?) 错误描述…

Notepad++ 配置python环境及虚拟环境和其它编程语言环境

背景: 在执行某些项目的时候,经常会否遇到这样一种情况(以python语言为例):不想在python的基础环境下运行,创建了虚拟环境来装相关项目的包,但是每次使用都要切换到虚拟环境下面使用"activate "命令激活环境…

AT24C02芯片介绍

AT24C02管脚介绍 AT24C02低功耗CMOS串行EEPROM,它是内含2568位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。 AT24C02的1…