selenium之unittest批量执行测试用例、生成html报告
来源:互联网 发布:js ajax视频教程 编辑:程序博客网 时间:2024/06/08 02:45
一、unittest 批量执行
我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittet 里面的 discover 方法来加载用例了。
加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚本的用例。
二、新建测试项目
1.打开pycharm,左上角File>New Projetc>Pure Python,在 location 位置命名一个测试工程的名称:MTbaby 然后保存,这里自己按照喜欢的名字去命名哦。
2.选中刚才新建的工程右键>New>Python Package>新建两个Python Package,分别命名为case 和 report,
3.在case文件夹中创建两个 Python Package,分别命名为 baidu和blog
4.在baidu文件夹中创建test_01.py,test_02.py两个文件;
在blog文件夹中创建test_03.py,test_04.py两个文件;
在report文件夹中创建run_all_case.py,result.html两个文件;
如图:
接下来用run_all_case.py脚本去批量执行所有的用例。
三、diascover 加载测试用例
1).discover 方法里面有三个参数:
- case_dir:这个是待执行用例的目录。
- pattern:这个是匹配脚本名称的规则,test*.py 意思是匹配 test 开头的所有脚本。
- top_level_dir:这个是顶层目录的名称,一般默认等于 None 就行了。
2).discover 加载到的用例是一个 list 集合,需要重新写入到一个 list 对象
testcase 里,这样就可以用 unittest 里面的 TextTestRunner 这里类的 run 方法去执行。
3).我们先在test_01.py,test_02.py,test_03.py,test_04.py这四个文件中分别写几个测试用例,比如分别执行加减乘除运算:
test_01.py文件
#-*- coding:utf-8 -*-import unittestclass Test(unittest.TestCase): u'''这是加法运算''' def testadd(self): result = 10+8 hope = 18 self.assertEqual(result,hope)
test_02.py文件
#-*- coding:utf-8 -*-import unittestclass Test(unittest.TestCase): u'''这是减法运算''' def testjianfa(self): result = 10-8 hope = 2 self.assertEqual(result,hope)
test_03.py文件
#-*- coding:utf-8 -*-import unittestclass Test(unittest.TestCase): def testcheng(self): result = 10*8 hope = 80 self.assertEqual(result,hope)
test_04.py文件
#-*- coding:utf-8 -*-import unittestclass Test(unittest.TestCase): def testchu(self): result = 10/5 hope = 2 self.assertEqual(result,hope)
接下来就是run_all_case.py文件:
#-*- coding:utf-8 -*-import unittest#执行测试用例的目录case_dir = r"F:\MTbaby\case" #这里填写你刚刚创建的case文件夹的目录testcase = unittest.TestSuite()discover = unittest.defaultTestLoader.discover(case_dir,pattern='test*.py',top_level_dir=None)#discover方法筛选出来的用例,循环添加到测试套件中for test_suit in discover: for test_case in test_suit: #添加用例到testcase testcase.addTest(test_case)print testcase
运行结果:
C:\Python27\python.exe F:/MTbaby/report/run_all_case.py....<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<baidu.test_01.Test testMethod=testadd>]>, <unittest.suite.TestSuite tests=[<baidu.test_02.Test testMethod=testjianfa>]>, <unittest.suite.TestSuite tests=[<blog.test_03.Test testMethod=testcheng>]>, <unittest.suite.TestSuite tests=[<blog.test_04.Test testMethod=testchu>]>]>Time Elapsed: 0:00:00.007000Process finished with exit code 0
四、 run 测试用例
1).为了更方便的理解,可以把上面 discover 加载用例的方法封装下,写成一个函数
2).先返回 TextTestRunner()类的实例
3).调用 run 方法去执行 all_case()这个函数
#-*- coding:utf-8 -*-import unittestdef all_case(): #执行测试用例的目录 case_dir = r"F:\MTbaby\case" testcase = unittest.TestSuite() discover = unittest.defaultTestLoader.discover(case_dir,pattern='test*.py',top_level_dir=None) #discover方法筛选出来的用例,循环添加到测试套件中 for test_suit in discover: for test_case in test_suit: #添加用例到testcase testcase.addTest(test_case) print testcase return testcaseif __name__=="__main__": #返回实例 runner = unittest.TextTestRunner() #run所有用例 runner.run(all_case())
五、生成html报告
批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成 HTML 格式的。
unittest 里面是不能生成 html 格式报告的,需要导入一个第三方的模块:
HTMLTestRunner。
1.导入 HTMLTestRunner
1).这个模块下载不能通过 pip 安装了,只能下载后手动导入,下载地址:
http://tungwaiyip.info/software/HTMLTestRunner.html
2).把 HTMLTestRunner.py 这个文件保存到python的安装目录Lib下。
3).可以点击打开,然后复制保存成.py格式文件,然后复制到python安装目录的Lib目录下即可。
2.demo 解析
1).下载 Download 下的第二个文件 test_HTMLTestRunner.py,这个就是官方给的一个测试 demo 了,从这个文件可以找到该模块的用法。
2).找到下图这段,就是官方给的一个 demo 了,test_main()里上半部分就是加载测试 case,我们不需要搞这么复杂。
3).最核心的代码是下面的红色区域。
3.生成 html 报告
1).我们只需把上面红色区域代码 copy 到上一篇的基础上稍做修改就可以了,这里主要有三个参数:
- stream:测试报告写入文件的存储区域
- title:测试报告的主题
- description:测试报告的描述
2).report_path 是存放测试报告的地址
所以我们可以修改run_all_case.py文件。
#-*- coding:utf-8 -*-import unittestdef all_case(): #执行测试用例的目录 case_dir = r"F:\MTbaby\case" testcase = unittest.TestSuite() discover = unittest.defaultTestLoader.discover(case_dir,pattern='test*.py',top_level_dir=None) #discover方法筛选出来的用例,循环添加到测试套件中 for test_suit in discover: for test_case in test_suit: #添加用例到testcase testcase.addTest(test_case) print testcase return testcaseif __name__=="__main__": #返回实例 #runner = unittest.TextTestRunner() import HTMLTestRunner report_path = r"F:\MTbaby\report\result.html"#这里就是你创建result.html fp = open(report_path, 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'这是我的自动化测试报告',description=u'测试用例执行情况:') # run所有用例 runner.run(all_case()) fp.close()
4.测试报告详情
打开你的result.html文件,会看到已经有测试报告了,哈哈~~
点开 View 里的 Detail 可以查看详情描述。
这里是全部pass的情况,我们来看一下执行测试用例failed的情况:修改test_01.py文件为:
#-*- coding:utf-8 -*-import unittestclass Test(unittest.TestCase): u'''这是加法运算''' def testadd(self): result = 10+8 hope = 20 #这里结果我们写成错误的 self.assertEqual(result,hope)
再次执行run_all_case.py脚本,然后刷新result.html文件:
我们看到有一个fail的结果,点开可看到错误产生的原因,是不是很方便啊~~~快去试试吧~
- selenium之unittest批量执行测试用例、生成html报告
- Python-unittest---测试用例批量执行
- python selenium执行所有测试用例并生成报告
- selenium---unittest框架测试用例函数执行顺序 优先级
- selenium---unittest框架测试用例函数执行顺序 优先级
- selenium unittest管理测试用例
- (selenium 四)unittest生成HTMLTestRunner报告
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成
- (selenium 三)批量执行测试用例
- (selenium 五)unittest通过测试套件组织用例
- (selenium 六)unittest通过测试套件组织用例 (2)
- 使用Pyunit执行测试并生成HTML报告
- appium自动化测试实践之python利用unittest进行测试用例执行的几种方式(转载)
- python自动生成python+unittest+requests测试用例
- 【selenium】python+selenium+unittest,关于每次执行完一个测试用例都关闭浏览器等时间较长的问题之解决方案
- python--selenium实用的自动生成测试HTML报告方法--HTMLTestRunner
- selenium之生成html测试报告
- selenium之unittest 装饰器
- android 定时器
- sklearn降维方法举例(RandomProjection,TSVD,t-SNE)
- python基础之模块之os模块
- PostgreSQL新手入门
- 转载资深程序员的总结经验
- selenium之unittest批量执行测试用例、生成html报告
- 嵌入式-1 uboot模式烧写镜像文件
- 【LintCode】数组的全排序(1)
- 如何限制checkbox最多勾选个数
- OpenCv--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解
- 带空格或逗号的字符串和基础数据类型的互相转换
- Quartz框架学习之一-快速入门
- Mac brew 升级gradle 后降级
- MySQL的保留关键字,使用时尽量避免