一、unittest 框架讲解
unittest是Python单元测试框架
二、需要掌握unittest四个概念
Testcase(测试用例):一个测试用例是一个独立的单元测试,它检查对特定输入集的特定响应。unittest提供了一个基类(TestCase),能够用他去创建新的测试用例。包括测试前准备环境的搭建(setUp),执行测试代码 (run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
Test suite(测试套件):将单一的测试用例或者是一整个测试套件,集合到一起
Test runner(测试运行器): 执行测试用例,run会执行testsuite/testcase中run的方法
TestLoader(测试加载器):加载testcase到testloader,从文件各个地方寻找testcase,创建testcase的实例,然后add到testsuite中,再返回一个testsuite实例
Test fixture(测试夹具):夹在case入口与出口而已,即执行目标之前执行setup,执行目标之后执行teardown
三、unittest测试原理
1、定义一个要被测试的类,该测试类需要Test开头且必须继承unittest.TestCase才能成为一个测试类,才可以被unittest执行
2、定义类中的测试方法时,方法必须要test_开头,只有这样才会告诉执行器哪些方法是可执行的,也只有test_开头的才会被执行
3、执行 unittest.main() ,该函数会负责运行测试,它会实例化所有TestCase的子类,并运行其中所有以test打头的方法。
四、Testcase示例

1 import unittest 2 from login import login_check 3 #定义一个要被测试的类,该测试类需要Test开头且必须继承unittest.TestCase才能成为一个测试类,才可以被unittest执行 4 class LoginTestCase(unittest.TestCase): 5 #测试夹具 6 def setUp(self): 7 print('测试开始了') 8 def tearDown(self): 9 print('测试结束了') 10 #定义类中的测试方法时,方法必须要test_开头,只有这样才会告诉执行器哪些方法是可执行的,也只有test_开头的才会被执行 11 def test_login(self): 12 #预期结果 13 excepted = {'code': '0000', 'massage': '账户密码正确,登陆成功'} 14 #传入参数 15 data = ('python18','123456') 16 #调用被测函数,传入参数(需要解包),获取实际结果 17 res= login_check(*data) 18 try: 19 self.assertEqual(excepted, res) # 通过实例对象(self)来调用assertEqual()方法 20 except AssertionError as e: 21 print("该测试用例测试未通过") # 可通过异常捕获来获取 22 raise e # 此处需要使用raise主动抛出异常 23 else: 24 pass 25 print("该测试用例测试通过") 26 if __name__ == '__main__': 27 unittest.main()
五、Test suite示例