【软件测试】Unittest框架的基本使用

Unittest框架的基本使用

  • 概述
  • TestCase
  • TestSuite
  • TestRunner
  • TestLoader
  • TestLoader与TestSuite区别

概述

1. 概念

UnitTest是Python自带的一个单元测试框架,用它来做单元测试。

2. 为什么要使用 UnitTest 框架?

1. 能够组织多个用例去执行 
2. 提供丰富的断言方法 
3. 能够生成测试报告

3. UnitTest 核心要素

1. TestCase(测试用例)
2. TestSuite(测试套件)  
3. TestRunner(以文本的形式运行测试测试用例) 
4. TestLoader(批量执行测试用例-搜索指定文件夹内指定字母开头的模块)【推荐】 
5. Fixture(固定装置(两个固定的函数,一个初始化时使用,一个结束时使用))

TestCase

说明:TestCase 就是测试用例

代码

'''目标:unittest框架--TestCase使用步骤:1. 导包 import unittest2. 定义测试类,继承unittest.TestCase3. 定义测试方法,方法名以test开头案例:编写 求和测试函数
'''
# 1. 导包
import unittest# 2. 编写求和函数
def add(x, y):return x + y# 3. 定义测试类,继承unittest.TestCase
class Test01(unittest.TestCase):# 4. 定义测试方法,方法名以test开头def test_add(self):# 调用add函数,获取结果result = add(1, 2)# 断言self.assertEqual(3, result)def test_add2(self):# 调用add函数,获取结果result = add(1, 3)# 断言self.assertEqual(4, result)'''__name__是Python中内置变量值:1. 如果直接运行当前模块,值为__main__2. 如果当前模块被导入到其他模块,值为模块名
'''

结果

TestSuite

说明:多条测试用例集合在一起,就是一个TestSuite 
使用: 1. 实例化: suite = unittest.TestSuite() (suite:为TestSuite实例化的名称) 2. 添加用例:suite.addTest(ClassName("MethodName")) (ClassName:为类名;MethodName:为方法名) 3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName)) (搜索指定ClassName内test开头的方法并添加到测试套件中)
【提示】:TestSuite需要配合TestRunner才能被执行

代码

'''目标: unittest框架--TestSuite使用操作:1. 导包 import unittest2. 创建测试套件3. 调用addTest方法将测试用例添加到测试套件4. 执行测试套件
'''# 1. 导包
import unittest
from test01_TestCase import Test01
from test02_TestSuite_1 import Test02# 实例化suite
suite = unittest.TestSuite()# 调用添加方法
# 写法 1 :类名(“方法名”) 注意:方法名称使用""双引号
suite.addTest(Test01("test_add"))
suite.addTest(Test01("test_add2"))
suite.addTest(Test02("test_minus"))
suite.addTest(Test02("test_minus2"))# 写法 2:添加测试类中所有test开头的方法
suite.addTest(unittest.makeSuite(Test01))
suite.addTest(unittest.makeSuite(Test02))# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(suite)

结果

TestRunner

说明:TextTestRunner是用来执行测试用例和测试套件的 
使用: 
1. 实例化: runner = unittest.TextTestRunner() 
2. 执行: runner.run(suite) # suite:为测试套件名称

TestLoader

说明: 1. 用来加载TestCase到TestSuite中,即加载满足条件的测试用例,并把测试用例封装成测试套件。 2. 使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件, 3. 将查找到的测试用例组装到测试套件; 用法: 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)

代码

'''目标:TestLoader的使用作用:搜索指定目录下指定开头的py文件,在py文件中搜索以test开头的方法,将其添加到TestSuite中需求:运行case目录下test01.py~test05.py文件步骤:1. 导包 import unittest2. 调用TestLoader类下discover方法3. 调用run方法执行测试套件
'''# 导包
import unittest
# 调用方法
# suite = unittest.TestLoader().discover("cases")
# 扩展1: 指定 tpshop 开头的模块
# suite = unittest.TestLoader().discover("cases", pattern="tpshop*.py")
# 扩展2: 使用defaultTestLoader--[推荐使用]
suite = unittest.defaultTestLoader.discover("cases")
#执行套件方法
runner = unittest.TextTestRunner()
runner.run(suite)

TestLoader与TestSuite区别

共同点:都是测试套件
不同点:实现方式不同TestSuite: 要么添加指定的测试类中所有test开头的方法,要么添加指定测试类中指定某个test开头的方法TestLoader: 搜索指定目录下指定字母开头的模块文件中以test字母开头的方法并将这些方法添加到测试套件中,最后返回测试套件

相关新闻

‘QDesktopWidget::availableGeometry‘: Use QGuiApplication::screens()

‘QDesktopWidget::availableGeometry‘: Use QGuiApplication::screens()

在较新的 Qt 版本中,QDesktopWidget 类已被标记为过时,推荐使用 QGuiApplication::screens() 来替代获取桌面相关信息。我的原代码中使用了 QApplication::desktop()->availableGeometry(),这是旧的获取桌面可用区域的方式,因此…

2026/7/12 12:32:18 阅读更多 →
全星FMEA软件系统在汽车电子行业的应用介绍

全星FMEA软件系统在汽车电子行业的应用介绍

全星FMEA软件系统在汽车电子行业的应用推荐 在汽车电子行业,产品的复杂性和安全性要求极高,失效模式及影响分析(FMEA)成为保障产品质量和可靠性的关键环节。全星FMEA软件系统凭借其卓越的性能和功能,为汽车电子企业提…

2026/7/17 13:50:36 阅读更多 →
3D手眼标定转换详细实施步骤及原理概述

3D手眼标定转换详细实施步骤及原理概述

3D手眼标定转换详细实施步骤及原理概述 一、手眼标定的核心目标二、3D手眼标定的原理概述一、基本概念与坐标系定义**二、数学建模与方程推导****1. 坐标变换的齐次矩阵表示****2. 手眼标定方程推导** **三、方程求解方法****1. 分离旋转与平移****2. 旋转矩阵求解****3. 平移向…

2026/7/13 4:43:35 阅读更多 →
Unity导出Android项目BuildIl2CppTask报错:5大原因与系统化解决方案

Unity导出Android项目BuildIl2CppTask报错:5大原因与系统化解决方案

1. 项目概述:从Unity到Android Studio的“最后一公里”之痛如果你是一名Unity开发者,尤其是涉足移动端开发,那么从Unity导出Android工程,再到Android Studio(后文简称AS)中完成最终打包,这条路径…

2026/7/19 21:01:11 阅读更多 →
亲身到店探访广州格拉苏蒂官方售后服务中心|官方热线及网点地址(2026年7月最新) - 亨得利官方服务中心

亲身到店探访广州格拉苏蒂官方售后服务中心|官方热线及网点地址(2026年7月最新) - 亨得利官方服务中心

2026年7月14日,我带着陪伴多年的格拉苏蒂腕表,亲自探访了广州的格拉苏蒂官方售后服务中心。这次实地体验的核心结论是:官方售后电话为400-801-5382,客服在线时间为8:00-22:00,需拨打本次最新公布电话;官方网点地…

2026/7/19 21:00:27 阅读更多 →
Linux 内核技术实战课 · TCP 重传模块:把“看不见的丢包“揪出来

Linux 内核技术实战课 · TCP 重传模块:把“看不见的丢包“揪出来

Linux 内核技术实战课 TCP 重传模块:把"看不见的丢包"揪出来实验环境说明:本文所有数据全部来自华为云 FlexusX(x2e.8u.16g)双机真实实验——靶机 ecs-665a-0003(私网 192.168.0.198)&#xff0…

2026/7/19 21:01:11 阅读更多 →
2026年7月亨得利香港官方售后网点全新发布:客户服务热线与地址全收录 - 亨得利官方博客

2026年7月亨得利香港官方售后网点全新发布:客户服务热线与地址全收录 - 亨得利官方博客

2026年7月亨得利香港官方售后网点已全面更新客户服务热线与地址。最新客服热线为+852-6263-8397,在线时间为每日8:00至22:00,所有售后需求均需拨打本次最新公布电话进行预约。官方售后地址已于2026年7月正式启用,客…

2026/7/19 21:01:11 阅读更多 →
Java Set接口详解:特性、实现类与最佳实践

Java Set接口详解:特性、实现类与最佳实践

1. Set接口基础概念 Set是Java集合框架中一个非常重要的接口,它继承自Collection接口,代表一组不允许重复元素的集合。数学上,Set对应着集合的概念——一组无序且唯一的元素。 Set的核心特性可以概括为: 元素唯一性:…

2026/7/19 21:01:48 阅读更多 →
Unity碰撞系统全解析:从基础原理到性能优化的实战指南

Unity碰撞系统全解析:从基础原理到性能优化的实战指南

1. 碰撞系统:从“穿模”到真实交互的核心在Unity里捣鼓了这么多年,我敢说,碰撞检测是每个开发者从“玩具Demo”迈向“可玩项目”必须跨过的第一道硬门槛。你肯定见过那种角色直接穿过墙壁、子弹打中敌人毫无反应的尴尬场面,业内戏…

2026/7/19 21:01:48 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端,也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析:从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量,更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端,也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析:从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量,更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

简介 saa是java的ai agent框架,本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理,不仅可以指导agent的开发,更可以改造框架,增加新特性 系列内容: 系列(一) 架构 完成 系列(三) 调用 I 工具 完成 II M…

2026/7/19 0:01:20 阅读更多 →
终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack Steam-auto-crack是一款功能强大的Steam游戏自动破解工具&#xff…

2026/7/19 9:10:31 阅读更多 →
移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…

2026/7/19 19:29:48 阅读更多 →