Python unittest单元测试框架 TestSuite测试套件
TestSuite 测试套件简介
对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套TestSuite。
可以通过addTest() 加载TestCase 到TestSuite 中,再返回一个TestSuite 实例。
示例:将simple_test 中的用例装载到测试套件中
suite=unittest.TestSuite() # 创建测试套件
suite.addTest(simple_test('test_add')) # 添加测试用例
suite.addTest(simple_test('test_divide')) # 向套件中添加用例
unittest.makeSuite根据文件批量创建测试套件,如果一个文件中有非常多测试用例,可以根据用例名称的相似性创建测试套件。
unittest.makeSuite(testCaseClass, prefix)
testCaseClass <Class类型>为测试用例类的名称
prefix <str类型>用例相似的部分名称<str>
示例:
suite = unittest.makeSuite(simple_test, 'test') # 创建并批量加载测试用例
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

批量添加用例到测试套件
unittest.TestLoader()根据目录批量创建测试套件,可以指定用例存放目录,根据文件名称匹配测试用例。
注意:用例存放的子目录中必须具备__init__.py 文件,否则无法加载用例。
unittest.TestLoader().discover(start_dir, pattern='test*.py', top_level_dir=None)
start_dir 要测试的模块名或测试用例目录。
pattern='test*.py' 表示用例文件名的匹配原则。星号“*”表示任意多个字符。
top_level_dir=None 测试模块的顶层目录。None <=> 测试用例不是放在多级目录中
示例:
suites=unittest.defaultTestLoader.discover('./testDirectory', pattern='*_test.py')
或
suites=unittest.TestLoader().discover('./testDirectory', pattern='*_test.py')
创建测试套件后,执行测试用例使用unittest.TextTestRunner().run(TestSuite)
示例:执行加载simple_test用例的测试套件
runner = unittest.TextTestRunner()
runner.run(suite) # 执行测试用例
unittest.TestSuite() 的常用方法
TestSuite.addTest 添加单个测试用例
suite.addTest(simple_test('test_add'))
TestSuite.addTests通过序列添加测试用例
suite.addTests([simple_test('test_add'),simple_test('test_divide')])
TestSuite.countTestCases() 统计测试套件中的用例个数
suite.countTestCases()
测试套件灵活运用
- 为测试用例文件添加suite 方法,方便加载测试套件
示例:
import unittest # 导入unittest 包
from unittest_doc.com.Calculator.Calculator import calculator # 引入需要测试的包# 所有用例需继承TestCase类或者其子类
class simple_test(unittest.TestCase):def setUp(self):print('@@@初始化test_simple@@@')self.a = calculator(1, 2)def test_add(self):print('---测试用例test_simple add---')self.assertEqual(self.a.minus(), -1, '两值不相等')self.assertEqual(self.a.add(), 3, '两值不相等')self.assertNotEqual(self.a.divide(), 1, '两值不相等')def test_divide(self):print('---测试用例test_simple divide---')self.assertEqual(self.a.divide(), 0.5)def tearDown(self):print('@@@结束test_simple@@@')def suite(): # 创建测试添加测试套件函数suite = unittest.TestSuite() # 建立测试套件suite.addTests([simple_test('test_add'), simple_test('test_divide')])
return suiteif __name__ == '__main__':runner = unittest.TextTestRunner(verbosity=2)runner.run(suite())
如上示例:创建测试套件函数,使用时直接调用其函数,不用额外添加用例。
- 嵌套测试套件,多个测试套件组合在一起
suite1 = unittest.TheTestSuite()
suite2 = unittest.TheTestSuite()
alltests = unittest.TestSuite((suite1, suite2))
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

相关文章:
Python unittest单元测试框架 TestSuite测试套件
TestSuite 测试套件简介 对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套Tes…...
FSB逮捕为乌克兰网络部队工作的俄罗斯黑客
导语 近日,俄罗斯联邦安全局(FSB)逮捕了两名涉嫌协助乌克兰网络部队对俄罗斯重要基础设施目标进行网络攻击的个人。这起事件引起了广泛关注,涉及到了网络安全和国际关系等多个领域。本文将为您详细介绍这一事件的背景和最新进展。…...
【PC电脑windows-学习样例tusb_serial_device-ESP32的USB模拟串口程序+VScode建立工程+usb组件添加+-基础样例学习】
【PC电脑windows-学习样例tusb_serial_device-ESP32的USB模拟串口程序-基础样例学习】 1、概述2、实验环境3-1、 物品说明3-2、所遇问题:ESP32 cannot open source file "tinyusb.h"或者“tinyusb.h:No such file or directory ....”3-3、解决问题&#…...
LeetCode75——Day26
文章目录 一、题目二、题解 一、题目 394. Decode String Given an encoded string, return its decoded string. The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guar…...
面试算法53:二叉搜索树的下一个节点
题目 给定一棵二叉搜索树和它的一个节点p,请找出按中序遍历的顺序该节点p的下一个节点。假设二叉搜索树中节点的值都是唯一的。例如,在图8.9的二叉搜索树中,节点8的下一个节点是节点9,节点11的下一个节点是null。 分析…...
2023SHCTF web方向wp
1.ezphp 看一眼,你大爷,啥玩意都给我过滤完了。 还好下面有preg_replace()/e,会把replacement当作php语句执行 传参pattern.*, .*表示任意字符,code{${phpinfo()}} ,为什么这样写,因为,print_…...
从物理磁盘到数据库 —— 存储IO链路访问图
原图来自:数据库IO链路访问图 – OracleBlog 由于很复杂,为了加深理解自己重新画了一次,另外参考其他文档补充了各部分的插图和介绍。 一、 存储服务器 1. 物理磁盘 外层的壳子称为硬盘笼 cage 2. chunklet Chunklet 是一个虚拟概念而不是实…...
基于java+springboot+vue在线选课系统
项目介绍 本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。员工管理系统主要包括个人中心、课程管理、专业管理、院系信息管理、学生…...
GO学习之 同步操作sync包
GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...
NUUO网络摄像头(NVR)RCE漏洞复现
简介 NUUO Network Video Recorder(NVR)是中国台湾NUUO公司的一款网络视频记录器。 NUUO NVR视频存储管理设备的__debugging_center_utils___.php文件存在未授权远程命令执行漏洞,攻击者可在没有任何权限的情况下通过log参数执行任意命令。…...
一款快速获取目标网站关键信息的工具
1.摘要 今天要介绍的这款工具是一个快速收集网站信息的开源脚本, 采用Python语言编写, 该工具可以快速收集网站的页面标题、网站上次更新日期、DNS信息、子域、防火墙名称、网站使用的技术栈、证书等信息, 默认支持对验证码和JavaScript内容执行绕过操作。 2.工具安装使用 使…...
将GC编程语言引入WebAssembly的新方法
本文讨论了一种名为 WasmGC 的新方法,用于将垃圾收集编程语言有效地引入 WebAssembly。 WasmGC 定义了新的 GC 类型,例如结构和数组,与之前编译为线性内存的方法 (WasmMVP) 相比,它们可以实现更好的优化: 在编译时和…...
微信小程序UI自动化测试实践:Minium+PageObject
小程序架构上分为渲染层和逻辑层,尽管各平台的运行环境十分相似,但是还是有些许的区别(如下图),比如说JavaScript 语法和 API 支持不一致,WXSS 渲染表现也有不同,所以不论是手工测试,…...
Java零基础入门-输入与输出
哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…...
iOS报错命名空间“std”中的“unary_function”
刚刚将我的 Xcode 升级到 15.0,突然它开始在 RCT_Folly 中出现以下错误 No template named unary_function in namespace std; did you mean __unary_function?我尝试删除缓存数据和派生数据并清理构建。也尝试删除 pod 和 node_modules。但没有任何帮助。 于是我…...
Flink SQL 窗口聚合详解
1.滚动窗⼝(TUMBLE) **滚动窗⼝定义:**滚动窗⼝将每个元素指定给指定窗⼝⼤⼩的窗⼝,滚动窗⼝具有固定⼤⼩,且不重叠。 例如,指定⼀个⼤⼩为 5 分钟的滚动窗⼝,Flink 将每隔 5 分钟开启⼀个新…...
中间件redis的使用
Java中的中间件配置体现在springboot的yml配置文件中。Springboot框架支持微服务和中间件和restful api远程服务的调用。中间件是Java web系统的中间层的服务系统的调用接口。Springboot的自动装配和约定大于配置机制初始化springcontext的容器空间和注册组件。使用容器管理服务…...
Why delete[] array when deepcopying with “=“?
代码负责释放对象之前已经分配的资源,比如堆上的内存。在执行深拷贝之前,你需要确保对象不再引用之前的资源,以避免内存泄漏。通过删除先前的资源,你可以确保在进行深拷贝之前,已经释放了之前的资源,从而避…...
curl(六)DNS解析、认证、代理
一 DNS解析 ① ip协议 使用ipv4 [-4] 还是ipv6 [-6] ② --resolve 场景: 在不修改系统配置文件 /etc/hosts 的情况下将单个请求临时固定到 ip 地址 1、使用 * 作为通配符,这样请求中调用的所有 Host 都 会转到你指定的 ip curl https://www.wzj.com --resolv…...
(免费领源码)PHP#MySQL高校学生信息管理系统28099-计算机毕业设计项目选题推荐
摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用php技术建设学生信息管理系统设计。…...
为内部ai工具平台集成taotoken实现多模型灵活切换的方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部AI工具平台集成Taotoken实现多模型灵活切换的方案 在企业内部开发AI工具平台时,一个常见的挑战是如何为不同的业…...
硬核实战:调用Gemini多模态管道,直击办公中的图表解析、发票识别与自动化脚本生成(国内镜像免费方案)
办公室里的信息并不全以纯文本存在——扫描版合同、财报截图、会议白板照片、纸质发票,这些“非结构化视觉数据”才是拖慢效率的元凶。Gemini 的多模态能力可以同时理解图片和文字,直接从中提取数据、输出分析或生成脚本。目前国内用户可通过聚合镜像站 …...
从CAN报文到转速值:手把手拆解SAE J1939-71的F004参数组(附Python解析代码)
从CAN报文到转速值:SAE J1939-71的F004参数组实战解析与Python实现 在汽车电子和商用车诊断领域,SAE J1939协议栈堪称工程师的"第二语言"。而其中J1939-71文档定义的参数组(PGN)解析,则是将原始CAN报文转化为工程价值的核心技能。本…...
实在Agent架构实战:彻底化解工厂员工入转调离流程繁琐与HR行政超负荷困局
摘要: 站在2026年这个数字化深水区的节点,制造企业正面临前所未有的管理韧性挑战。工厂员工入转调离流程繁琐已不再仅仅是行政效率问题,而是演变为制约企业规模化扩张与人力成本控制的战略瓶颈。传统数字化手段往往受困于系统烟囱、老旧OA/ER…...
别再死记硬背公式了!用Python动画直观理解SAR距离徙动(附代码)
用Python动画拆解SAR距离徙动:从数学恐惧到视觉理解 雷达工程师们常开玩笑说,合成孔径雷达(SAR)成像有两个门槛:一个是昂贵的硬件设备,另一个是让人望而生畏的数学公式。当我第一次看到距离徙动(…...
终极TFTP服务器解决方案:Tftpd64网络服务一体化配置完全指南 [特殊字符]
终极TFTP服务器解决方案:Tftpd64网络服务一体化配置完全指南 🚀 【免费下载链接】tftpd64 The working repository of the famous TFTP server. 项目地址: https://gitcode.com/gh_mirrors/tf/tftpd64 Tftpd64是一款轻量级、多线程的网络服务套件…...
5分钟掌握HTML转Word:html-to-docx让文档格式转换变得简单高效
5分钟掌握HTML转Word:html-to-docx让文档格式转换变得简单高效 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 还在为HTML内容无法完美转换为Word文档而烦恼吗?html-to-docx是…...
3分钟搞定Windows虚拟光驱:WinCDEmu终极免费指南
3分钟搞定Windows虚拟光驱:WinCDEmu终极免费指南 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu 还在为ISO镜像文件打不开而烦恼吗?还在寻找一款真正免费的Windows虚拟光驱工具吗?今天我要向你介绍…...
VAP特效动画:跨平台高性能动画播放的终极解决方案
VAP特效动画:跨平台高性能动画播放的终极解决方案 【免费下载链接】vap VAP是企鹅电竞开发,用于播放特效动画的实现方案。具有高压缩率、硬件解码等优点。同时支持 iOS,Android,Web 平台。 项目地址: https://gitcode.com/gh_mirrors/va/vap VAP&…...
广州初创公司,办公家具租还是买?我帮你算了一笔账
广州很多初创公司都会面临一个真实问题:现金流紧张、抗风险能力弱,办公家具采购却是一笔不小的开支。租划算,还是买划算?结合广州初创公司的经营特点和现金流需求,我从成本、灵活性、风险、售后四个维度对比后得出的结…...
