python单元测试框架unittest学习笔记二--TestCase、TestSuite、TestLoader、TextTestRunner
unittest框架中各元素的学习
1、TestCase类
unittest.TestCase()类的实例表示单元测试宇宙中的逻辑测试单元。此类旨在用做基类,其子类将实现特定的测试用例。此类实现测试运行程序所需的接口,以允许它驱动测试,以及测试代码可用于检查和报告各种故障的方法
即每个测试函数必须继承TestCase类,测试函数并以test_开头命名
语法:
1.导入unitest包
2.定义测试类:新建测试类必须继承unitest.TestCase
3.定义测试方法:测试方法名称命名必须以test开头
4.调用unitest.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()
二、TestSuite
说明:测试套件 多条测试用例集合在一起,就是一个testSuite
使用:
1、先实例化:suite = unnitest.TestSuit()
suite:为TestSuite实例化的名称
className 为类名;methodName为方法名
3、添加扩展:
suite.addTest(unnitest.makeSuite(className))
搜索指定className内的test开头方法并添加到测试套件中
以上步骤只能将测试用例的方法添加到测试套件中,并不能执行,如果要执行则需要TextTestrunner()方法来执行
import unittest import test_unitest01 suite = unittest.TestSuite() # suite.addTest(test_unitest01.test01("test_03")) # suite.addTest(test_unitest01.test01("test_04")) # 只是把测试用例添加到了测试套件中,并不是执行测试用例,这种比较麻烦还有一种 # 使用unittest.makeSuite方法一次导入一个类中的所有测试方法 suite.addTest(unittest.makeSuite(test_unitest01.test01))
三、TextTestRunner
作用,执行suite中的测试用例
使用方法:
--先实例化TextTestRunner()实例对象
--调用对象的run方法
---只要把suite作为参数传递到run方法中
# 使用unittest.makeSuite方法一次导入一个类中的所有测试方法 suite.addTest(unittest.makeSuite(test_unitest01.test01)) # 把整个测试类中的方法添加进来 runner = unittest.TextTestRunner() runner.run(suite)
四、TestLoader
可以从指定目录查找指定的py文件中的所有测试用例,自动加载到TestSuite中
""" testLoader的使用方法 可以从指定目录查找指定的py文件中的所有测试用例,自动加载到TestSuite中 """ import unittest suite = unittest.TestLoader().discover("./","test_u*.py") runner = unittest.TextTestRunner() runner.run(suite)
当只要执行py文件中多个测试用例中的几个,而不是全部执行时,那么使用testsuite的addtest方法加载指定的测试用例
当执行所有的py文件中的所有的测试用例时,那么使用TestLoader
小结:
所有的testcase最终都需要使用texttestrunner来执行
TextTestRunner执行的是TestSuite
一个TestSuite中可以有多个TestCase