1、Unittest框架
1.1 什么是框架?
说明:
1、框架英文单词为framework
2、为解决一类事情的功能集合
1.2 什么是Unittest框架?
概念:Unittest是Python自带的一个单元测试框架,用它来做单元测试
1.3 为什么使用Unittest框架?
1. 能够组织多个用例去执行
2. 提供丰富的断言方法
3. 能够生成测试报告
1.4 Unittest核心要素
1、TestCase
2、TestSuite
3、TestRunner
4、TestLoader
5、Fixture
2、TestCase
说明:TesstCase就是测试用例
2.1 案例
需求:
定义一个实现加法操作的函数,并对该函数进行测试
import unittest
def add(x, y):
return x + y
class Test01(unittest.TestCase):
def testadd01(self):
add(2, 3)
def testadd02(self):
add(10, 10)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
2.2 定义测试用例
1. 导包:import unittest
2. 定义测试类:新建测试类必须继承unittest.TestCase
3. 定义测试方法:测试方法名称命名必须以test开头
2.3 执行测试用例
方式一:
使用pycharm在代码上点击鼠标右键,选择使用UnitTest运行
方式二:
调用 unittest.main("包名") 来运行
3、TestSuite
说明:(翻译:测试套件)多条测试用例集合在一起,就是一个TestSuite
使用:
1. 实例化: suite = unittest.TestSuite()
(suite:为TestSuite实例化的名称)
2. 添加用例:suite.addTest(ClassName("MethodName"))
(ClassName:为类名;MethodName:为方法名)
3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName))
(搜索指定ClassName内test开头的方法并添加到测试套件中)
3.1 案例
import unittest
from Unittest import Test01
suite = unittest.TestSuite()
suite.addTest(Test01("testadd01"))
runner = unittest.TextTestRunner()
runner.run(suite)
4、TextTestRunner
说明:TextTestRunner是用来执行测试用例和测试套件的
使用:
1. 实例化: runner = unittest.TextTestRunner()
2. 执行: runner.run(suite)
4.1 案例
需求:
1、将test01.py..test10.py共10条用例,将这10条用例批量执行;
问题:
1. 使用suite.addtest(unittest.makeSuite(className))导入10条测试类
2. .addtest()需要添加10次
5、TestLoader
说明:
用来加载TestCase到TestSuite中,即加载满足条件的测试用例,并把测试用例封装成测试套件。
使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件 ,
并将查找到的测试用例组装到测试套件;
用法:
suite = unittest.TestLoader().discover(test_dir, pattern='test*.py')
自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件
test_dir: 为指定的测试用例的目录
pattern:为查找的.py文件的格式,默认为'test*.py'
也可以使用unittest.defaultTestLoader 代替 unittest.TestLoader()
运行:
runner = unittest.TextTestRunner()
runner.run(suite)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
5.1 案例
"""
目标:演示TestLoader()类的用法
作用:搜索指定目录下指定开头的py文件,在Py文件中搜索test开头测试方法,并且将这些方法添加到测试套件中,最后返回测试套件
需求:
运行 cases目录下test01.py~test05.py文件
操作:
1. 导包 unittest
2. 调用TestLoader类下discaver方法
3. 执行测试用例
"""
import unittest
suite = unittest.defaultTestLoader.discover("../cases")
unittest.TextTestRunner().run(suite)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
5.2 TestLoader和TestSuite区别
1. TestSuite需要手动添加测试用例(可以添加测试类,也可以添加测试类中某个测试方法)
2. TestLoader搜索指定目录下指定开头.py文件,并添加测试类中的所有的测试方法,不能指定添加测试方 法;