python单元测试框架unittest学习笔记五--参数化parameterized模块及HTML测试报告生成
参数化:
测试用例中使用参数化的场景:
多个测试用例代码相同,只是测试数据不同,预期结果不同,可以把多个测试用例通过参数化的技术合并为一个测试用例
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Richard_Kong 4 import unittest 5 from parameterized import parameterized 6 7 8 def sum(a, b): 9 return a + b 10 11 12 lis1 = [(1, 2, 3), (4, 6, 10), (1, 19, 20)] 13 14 15 class my_test(unittest.TestCase): 16 @parameterized.expand(lis1) 17 def test_mytest(self, a, b, c): 18 self.assertEqual(sum(a, b), c)
HTML测试报告生成:
1、把HTMLTestRunner.py拷贝到项目目录下
2、在代码中导入HTMLTestRunner模块
3、调用HTMLTestRunner(stream = f,title = "文件名")
第一个参数使用open打开的文件,文件扩展名一定是HTML
open打开文件的时候,用wb,不用指定字符集
4、调用runner的run方法执行测试套件
5、关闭open打开的文件
注意这里的HTMLTestRunner.py使用pycharm无法直接安装,需要手动下载并直接保存到python3.7的Lib目录中
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Richard_Kong 4 import unittest 5 from HTMLTestRunner import HTMLTestRunner 6 7 import test_unittest02 8 9 # suite = unittest.TestLoader().discover("./","test_unittest02.py") 10 suite = unittest.TestSuite() 11 suite.addTest(unittest.makeSuite(test_unittest02.my_test)) 12 f = open("test.html","wb") 13 htmlrunner = HTMLTestRunner(stream=f,title="myfirst") 14 htmlrunner.run(suite) 15 f.close()
Unittest官方文档参考:
https://docs.python.org/zh-cn/3/library/unittest.html