Unittest基本使用

  • Post author:
  • Post category:其他




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):    # 鼠标在这一行右键运行可执行Test01类下的所有用例
    #定义测试方法:测试方法名称命名必须以test开头 
    def testadd01(self):			# 鼠标在这一行右键运行只执行testadd01这一条用例
        add(2, 3)

    def testadd02(self):			# 鼠标在这一行右键运行只执行testadd02这一条用例
        add(10, 10)

# 可以这么使用
# unittest.main("test01_testcase")



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
suite = unittest.TestSuite()

# 调用添加方法
# 写法1:  类名(“方法名”)   注意: 方法名要使用双引号
suite.addTest(Test01("testadd01"))

# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(suite)



4、TextTestRunner

说明:TextTestRunner是用来执行测试用例和测试套件的 
使用:
	1. 实例化: runner = unittest.TextTestRunner()
	
	2. 执行: runner.run(suite) # 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)



5.1 案例

"""
    目标:演示TestLoader()类的用法
    作用:搜索指定目录下指定开头的py文件,在Py文件中搜索test开头测试方法,并且将这些方法添加到测试套件中,最后返回测试套件
    需求:
        运行 cases目录下test01.py~test05.py文件
    操作:
        1. 导包 unittest
        2. 调用TestLoader类下discaver方法
        3. 执行测试用例
"""
# 导包
import unittest
# 调用方法
# suite = unittest.TestLoader().discover("../cases")

# 扩展 指定 tpshop开头的模块
# suite = unittest.TestLoader().discover("../cases", pattern="tpshop*.py")

# 扩展 使用 推荐使用
suite = unittest.defaultTestLoader.discover("../cases")

# 执行 套件 方法 TextTestRunner
unittest.TextTestRunner().run(suite)



5.2 TestLoader和TestSuite区别

1. TestSuite需要手动添加测试用例(可以添加测试类,也可以添加测试类中某个测试方法) 
2. TestLoader搜索指定目录下指定开头.py文件,并添加测试类中的所有的测试方法,不能指定添加测试方 法;



版权声明:本文为weixin_44244493原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。