批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。

unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner

 

一、导入HTMLTestRunner

1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

Selenium3+python自动化011-unittest生成测试报告(HTMLTestRunner)

2.Download下HTMLTestRunner.py文件就是我们需要下载的包。

3.下载后手动拖到python安装文件的Lib目录下

4.验证安装成功 执行 import HTMLTestRunner 没有报错证明配置成功。

Selenium3+python自动化011-unittest生成测试报告(HTMLTestRunner)

 

报告路径

Selenium3+python自动化011-unittest生成测试报告(HTMLTestRunner)

 

 1 # encoding = utf - 8
 2 import unittest
 3 import sys
 4 import HTMLTestRunner
 5 import time
 6 import os
 7 
 8 #被测试类
 9 class myclass(object):
10     """classmethod 修饰符对应的函数不需要实例化,
11     不需要 self 参数,但第一个参数需要是表示自身
12     类的 cls 参数,可以来调用类的属性,类的方法,
13     实例化对象等。"""
14     @classmethod
15     def sum(cls,a,b):
16         return a + b   #将两个传入参数进行相加操作
17     @classmethod
18     def sub(cls, a, b):
19         return a - b   #将两个传入参数进行相减操作
20 
21 class mytest(unittest.TestCase):
22     # @classmethod
23     # def setUpClass(cls):
24     #     """初始化类固件"""
25     #     print("-----setUpClass")
26 
27     # @classmethod
28     # def tearDownClass(cls):
29     #     """重构类固件"""
30     #     print("--tearDownClas")
31 
32     #初始化工作
33     def setUp(self):
34         self.a = 3
35         self.b = 1
36         print("--setUp")
37 
38     #退出清理工作
39     def tearDown(self):
40         print("--tearDown")
41 
42     #具体的测试用例,一定要以test开头
43     def test1sum(self):
44         # res=3/0 抛出异常,执行结果为F
45         #断言两数之和的结果是否是4
46         res=myclass.sum(self.a,self.b)
47         self.assertEqual(res,4,'test sum fail')
48         print('testsum方法')
49 
50     def testsub(self):
51         #断言两数之差的结果是否是2
52         self.assertEqual(myclass.sub(self.a,self.b),2,'test sub fail')
53         print('testsub方法')
54 
55 
56 class aa(unittest.TestCase):
57     # num=2
58     # @unittest.skip('skipping')
59     # @unittest.skipIf(num>1,'num已经大于1')
60     @unittest.skipUnless(sys.platform == "linux", "requires linux")
61     def testaa(self):
62         print('testaa')
63 
64 
65 if __name__ == '__main__':
66     testCase = unittest.TestLoader().loadTestsFromTestCase(mytest)
67     #将多个测试类加载到测试集合中
68     suite = unittest.TestSuite([testCase])
69     # 创建时间
70     cur_time = time.strftime('%Y-%m-%d_%H_%M_%S')
71     # 文件路径
72     filename = os.path.dirname(os.path.abspath('.'))+'\\report\\'+cur_time+'.html'
73     print("===================================")
74     print("当前文件路径是:",os.path.abspath('.'))
75     print("===================================")
76     print("当前文件路径的上一级文件路径是:",os.path.dirname(os.path.abspath('.')))
77     # 写入一个文件
78     f = open(filename,"wb")
79     # 报告详情
80     runner = HTMLTestRunner.HTMLTestRunner(stream=f,title="测试报告",description='测试报告描述')
81     runner.run(suite)
82 
83     # 原始版本
84     # f = open("./report.html","wb")
85     # runner = HTMLTestRunner.HTMLTestRunner(stream=f,title="测试报告",description="测试报告描述")
86     # runner.run(suite)
View Code

相关文章: