批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。
unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner
一、导入HTMLTestRunner
1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
2.Download下HTMLTestRunner.py文件就是我们需要下载的包。
3.下载后手动拖到python安装文件的Lib目录下
4.验证安装成功 执行 import 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)