web端自动化——selenium项目集成HTML测试报告
参考内容:
虫师:《selenium2自动化测试实战——基于python语言》
PS:书中的代码,只能做参考,最好还是自己码一码,不一定照搬就全是对的,实践出真知。。。
随着软件不断迭代功能越来越多,对应的测试用例也会呈指数增长。一个实现几十个功能的项目,对应的用例可能有上百个甚至更多,如果全部集成在一个文件中,那么这个文件就很臃肿且维护麻烦。
一个很好的方法就是将这些用例按照功能类型进行拆分,分散到不同测试文件中,即一个项目,对应多个分支。
前言:
HTML测试报告
对软件测试人员来讲,测试的产出很难衡量。换句话说,测试人员的价值比较难以量化和评估,相信这一点对软件测试人员来说深有体会。我们花费了很多时间与精力所做的自动化测试也是如此。所以,需要一份漂亮且通俗易懂的测试报告来展示自动化测试成果。显然,一个简单的Log文件是不够的。
HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,它生成易于使用的HTML测试报告。HTMLTestRunner是在BSD许可证下发布的。
下载地址如下:
http://tungwaiyip.info/software/HTMLTestRunner.html
这个扩展非常简单,只有一个HTMLTestRunner.py文件,选中后单击鼠标右键,在弹出的快捷菜单中选择链接另存为,将它保存到本地。安装方法也很简单,将其复制到Python安装目录下即可。
Windows:将下载的文件保存到...\Python\Lib目录下。
1.1 修改HTMLTestRunner
因为HTMLTestRunner.py是基于Python 2开发的,为了使其支持Python 3的环境,需要对其中的部分内容进行修改。下面通过编辑器打开HTMLTestRmmer.py文件。
#94行
import StringIO
修改为
import io
#539行
self.outputBuffer = StringIO.StringIO ()
修改为:
self.outputBuffer = io.StringIO()
#631行
print >>sys.stderr,'\nTime Elapsed: %s'(self.stopTime-self.startTime)
修改为:
print(sys.stderr,'\nTime Elapsed: %s'(self.stopTime-self.startTime))
#642行
if not rmap.has_key(cls):
修改为:
if not cls in rmap:
#766行
uo = o.decode('latin-1')
修改为: uo = e
#772行
ue = e.decode('latin-1')
修改为:
ue = e
一、分拆后的实现代码(***实例)
在pycharm中新建如下目录:
test_baidu.py代码如下:
from selenium import webdriver
import unittest
from time import *
class MyDriver(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(10)
self.base_url = "https://www.baidu.com/"
def test_baidu(self):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
driver.find_element_by_id("su").click()
sleep(3)
title = driver.title
self.assertEqual(title,'HTMLTestRunner_百度搜索')
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
test_youdao.py代码如下:
from selenium import webdriver
import unittest #导入单元测试框架
from time import *
class MyDriver(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(10)
self.base_url = "http://www.youdao.com/"
def test_youdao(self):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_xpath(".//*[@id='translateContent']").clear()
driver.find_element_by_xpath(".//*[@id='translateContent']").send_keys("webdriver")
driver.find_element_by_xpath(".//*[@id='form']/button").click()
sleep(2)
title = driver.title
self.assertEqual(title,'【webdriver】什么意思_英语webdriver的翻译_音标_读音_用法_例句_在线翻译_有道词典')
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
HtmlReport.py代码如下:
import unittest
import time
from HTMLTestRunner import HTMLTestRunner#将HTMLTestRunner模块导入
#指定测试用例为当前文件夹的test_case目录
test_dir='./test_case'
discover=unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
if __name__=='__main__':
#按照一定格式获取当前时间
now=time.strftime("%Y-%m-%d %H-%M-%S")
filename=test_dir+'./'+now+'result.html'
#通过open()方法以二进制写模式打开当前目录下的result.html,如果没有,则自动创建该文件。
fp=open (filename,'wb')
#定义测试报告:stream指定测试报告文件, title用于定义测试报告的标题,description用于定义测试报告的副标题。
runner=HTMLTestRunner(stream=fp,title='百度搜索测试报告',description='用例测试执行情况:')
# 运行项目组装的用例
runner.run(discover)
# 关闭报告文件
fp.close()
备注:运行上面HtmlReport.py代码,会在test_case目录下生成2018-11-12 13-41-56result.html的测试报告,使用浏览器打开如下图所示:
相关文章
- 华为IPD集成产品开发流程
- gitlab+kubernetes 持续集成springboot项目
- 项目持续集成工具
- 医院信息集成平台项目建设方案与实践 第5章 平台建设推进计划
- 医院信息集成平台项目建设方案与实践 第4章 项目建设设计(五)
- 医院信息集成平台项目建设方案与实践 第4章 项目建设设计(四)
- 医院信息集成平台项目建设方案与实践 第4章 项目建设设计(三)
- 项目集成项目管理之项目范围管理
- Android原生项目集成React Native
- VMware发布“不酷,但非常有用的”集成容器
- 【军哥谈CI框架】之CI中集成百度UEditor
- 集成maven和Spring boot的profile功能
- iOS项目中集成Flutter的最新适配升级
- docker 创建 rocketMQ 记录 +springboot集成mq
- springboot集成swagger
- 持续集成案例学习:Docker、Java与Maven
- SpringBoot集成内存数据库Derby
- 安卓项目中如何集成aar
- 阿里云服务器centos下搭建Jenkins持续集成环境(安装jenkins)[1]
- 李洪强iOS开发本人集成环信的经验总结_08_自动登录补充
- 在原生项目中集成Flutter
- RN集成到Android原生项目
- ios原生项目集成react-native过程记录
- 3-3. SpringBoot项目集成【用户身份认证】实战 【全流程篇】基于JWT+双重检查的登录+登出+拦截器
- 3-1. SpringBoot项目集成【用户身份认证】实战 【技术选型篇】基于Session、Token、JWT怎么选?
- 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)