一、简介
python自带的单元测试框架,可用于做单元测试,功能丰富,无需安装。
二、优点
1. 能够组织多个用例去执行
2. 提供丰富的断言方法
3. 能够生成测试报告
三、unittest的组成
TestCase 创建我们的测试用例
TestSuite 将我的多个测试用例组合成一个测试集合
TextTestRunner 执行测试集合
TestLoader 执行一个目录下的所有测试用例文件
Fixture 测试夹具
四、实现步骤
1、导包
2、定义测试类:管理测试用例
3、定义方法:即测试用例
4、执行测试用例
五、测试集合和执行方式
测试集合
mian 文件级别的所有测试用例 - 手工的
TestSuite 类级别、方法级别的测试用例 - 手工的
TestLoader 文件级别的所有测试用例 - 自动的
执行方式
TestCase + Pycharm
TestCase + unittest.main()
TestCase + TestSuite + TextTestRunner **** 使用频率最高
TestCase + TestLoader + TextTestRunner
六、代码示例
import unittest
class TestFunc1(unittest.TestCase):
# 定义测试用例方法 -- 实例方法
def test_add1(self):
print('测试模块1功能')
def test_add2(self):
print('测试模块2功能')
class TestFunc2(unittest.TestCase):
# 定义测试用例方法 -- 实例方法
def test_add3(self):
print('测试模块3功能')
def test_add4(self):
print('测试模块4功能')
# 使用main方法来执行调用(基于unittest自带的执行方式)
if __name__ == '__main__':
# 1 创建测试集合
suite = unittest.TestSuite()
# 2 添加测试用例到集合
# 方法1:指定测试用例方法, suite.addTest(测试类(“测试用例方法”))
# suite.addTest(TestFunc('test_add1'))
suite.addTest(TestFunc1('test_add2'))
# 方法2:指定类, suite.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestFunc2))
# 3 TextTestRuner执行
# 3-1 实例化(创建)执行套件
runner = unittest.TextTestRunner()
# 3-2 执行测试集合
runner.run(suite)
七、测试报告
1、unittest自带的测试报告
导出格式选择HTML可在浏览器中打开查看
第三方测试报告
说明:第三方测试报告需拿到模板文件,且是通过TestLoader测试集的方式来批量执行模板用例文件的,原理是open打开模板文件,测试结果以数据流的形成传到文件中,再创建一个新的报告文件,语法格式如下:
import unittest
# 导入第三方法测试报告的模块包
from Commonlib.HTMLTestRunner_cn import HTMLTestRunner
# 1 将需执行的测试目录及文件添加到测试集
# my_suite = unittest.TestLoader().discover('my_unittest0727', pattern='test*.py')
my_suite = unittest.defaultTestLoader.discover('my_unittest0727', pattern='test*.py')
# 2 打开报告文件,因有大量数据包含图表信息,所以使用‘wb’二进制方式写入
with open('./reports/07301617进阶report.html','wb') as file_data:
runner = HTMLTestRunner(file_data, # 测试数据存储的变量
title='xxxxxx平台测试报告', # 测试报告名称(网页标头)
verbosity=2, # 输出等级
description='这是一些描述信息:xxxxxxxx') # 定制的描述信息
runner.run(my_suite)
第三方测试报告可自定义一些参数输出,如输出级别、报告标题、描述信息等。