一、简介

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自带的测试报告

unittest框架实战 unittest框架的优点_unittest框架实战


导出格式选择HTML可在浏览器中打开查看

unittest框架实战 unittest框架的优点_开发语言_02


unittest框架实战 unittest框架的优点_测试工程师_03

第三方测试报告

说明:第三方测试报告需拿到模板文件,且是通过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)

第三方测试报告可自定义一些参数输出,如输出级别、报告标题、描述信息等。

unittest框架实战 unittest框架的优点_开发语言_04


unittest框架实战 unittest框架的优点_unittest框架实战_05


unittest框架实战 unittest框架的优点_开发语言_06