一、unittest框架基本原理介绍

unittest是受Junit启发编写的一款python语言的单元测试框架,并与其他语言中的主流单元测试框架有相似的风格。unittest支持自动化测试,测试准备和测试清理部分代码复用,支持测试用例聚合成测试套件,并与报告生成框架相互独立

二、为什么要使用unnitest框架来做单元测试

1、能够组织多个测试用例执行

2、提供丰富的断言方法

3、能够生成测试报告

三、unnittest框架的核心要素

1、testcase:测试用例

一个测试用例是一个独立的测试单元。它检查输入特定的数据时的相应。unittest提供一个基类:TestCase,用于新建测试用例。

2、TestSuite:测试套件

test suite是多个测试用例组合在一起,或称测试套件,并且testsuite可以嵌套testsuite。它用于归档需要一起执行的测试

3、testloader:加载组件

将指定路径下的测试用例py文件加载到testsuite中

4、test runner:测试运行器

testrunner是一个用于执行和输出测试结果的组件。只用来执行测试用例的,其中run(test)会执行testsuite/testcase中的run(result)方法。

这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果

5、test fixture:测试脚手架

testfixture 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理工作。举个例子:这可能包含创建临时或者代理数据库、

目录,再或者启动一个服务器进程等等

四、基本示例

创建一个测试用例执行类并执行测试

"""unitest的语法规则:
用import unitest导入unitest模块
定义一个集成unittest.TestCase的测试用例类,如class XXX(unitest.TestCase)
即如果定义了则会在每个测试case执行前先执行setup方法,执行完毕后执行teardown方法
用例名 必须以test开头,否则unitest不能识别
一个测试用例应该只测试一个方面,测试的目的和测试内容应该很明确,主要是调用seertEqual\assertRaises等断言方法来
判断程序执行结果和预期值是否相符合
调用unnitest.main()启动测试
"""
import unittest

def sum(a,b):
    return a+b


class test01(unittest.TestCase):
    def test_01(self):
        print("in function test 01")

    def test_02(self):
        print("in function test 02")

    def test_03(self):
        print(sum(1,8))

    def test_04(self):
        print(sum(6,9))

    def test_05(self):
        print(sum("aaa",9))


if __name__ == '__main__':
    unittest.main()