python使用unittest进行单元测试

文章目录

  • 示例程序
  • 更多assert方法

通过一种规范的测试方法,可以帮助我们在修改程序后能够快速的检测一些bug,使用unittest库的方法如下:

示例程序

import unittestclass Demo01(unittest.TestCase):@classmethoddef setUpClass(self) -> None:print("执行测试用例 - 整体初始化 - setUpClass")def setUp(self) -> None:  # 测试用例方法执行前的操作print('开始执行测试用例 - setUp')def tearDown(self) -> None:  # 测试用例方法执行前的操作print('结束执行测试用例 - tearDown')@classmethoddef tearDownClass(cls) -> None:  # 测试用例方法执行后的操作print("执行测试用例 - 整体结束 - tearDownClass")def test_01(self):  # 测试用例print("测试用例1")self.assertEqual(1, 1)  # 测试断言def test_02(self):  # 测试用例print("测试用例2")self.assertEqual(2, 2)def test_03(self):  # 测试用例print("测试用例3")self.assertEqual(1, 2)if __name__ == '__main__':unittest.main()

执行结果如下:

执行测试用例 - 整体初始化 - setUpClass
开始执行测试用例 - setUp
测试用例1
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例2
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例3
结束执行测试用例 - tearDownRan 3 tests in 0.010sFAILED (failures=1)2 != 1Expected :1
Actual   :2.........执行测试用例 - 整体结束 - tearDownClass

在执行测试用例的过程中:

  1. 在执行全部用例前会执行setUpClass,全部用例执行完成后会执行tearDownClass
  2. 每个用例在执行前会执行setUp,用例执行后会执行tearDown
  3. 每个需要执行的用例前都有一个前缀test,根据包含前缀的函数名称(比如testxxxx),就会被认定为是测试用例的一部分

更多assert方法

断言方法检查条件
assertEqual(a, b)a == b
assertNotEqual(a, b)a != b
assertTrue(x)bool(x) is True
assertFalse(x)bool(x) is False
assertIs(a, b)a is b
assertIsNot(a, b)a is not b
assertIsNone(x)x is None
assertIsNotNone(x)x is not None
assertIn(a, b)a in b
assertNotIn(a, b)a not in b
assertlsInstance(a, b)isinstance(a, b)
assertNotIsInstance(a, b)not isinstance(a, b)

更多assert的方法请参考:https://docs.python.org/zh-cn/3/library/unittest.html#unittest.TestCase.assertEqual

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式----装饰器模式

在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰器模式来实现。 装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变他的…

MQTT协议解析:揭秘固定报头、可变报头与有效载荷的奥秘

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的通讯协议,常用于远程传感器和控制设备的通讯。MQTT协议基于发布/订阅模式,为大量计算能力有限且工作在低带宽、不可靠网络环境中的设备…

Java集合基础梳理(集合体系+ArrayList)

目录 Java集合体系 为什么要使用集合类 ? 如何选用集合? 哪些集合类是线程安全的?哪些不安全? 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么? 遍历的同时修改一个List有几种方式 ArrayList 如何进行元素的遍历操作&#x…

Spring Boot项目误将Integer类型写成int来进行传参

在处理项目中Idea中无报错: 问题: localhost:8080/param/m2在浏览器中输入:localhost:8080/param/m2 产生报错: This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue Feb 27 20:55…

Android PMS——系统更新和版本管理(十三)

当 Android 系统进行升级时,PMS(Package Manager Service)在系统更新和版本管理中扮演着关键角色。PMS 负责确保应用程序在新的系统版本上能够正常运行,这涉及到一系列的适配流程,具体如下: 检测不兼容应用:在系统升级过程中,PMS首先会扫描已安装的应用程序,识别出那些…

git上传了一个文件到远程仓库里面,之后如何忽略它

我们可能会遇到这种情况,因为一些失误或者别人的粗心,将一些本地的文件上传到了远程仓库,而且这个文件是环境相关的,随着不同开发者的环境,编译器会动态修改,从而导致每个人都不同 在提交过程中相互覆盖&a…

Redis哨兵模式和Redis Cluster模式

文章目录 🔊博主介绍🥤本文内容Redis Cluster 模式支持自动故障转移功能吗?Redis Cluster 模式支持自动故障转移功能和哨兵有什么区别?Redis Cluster 模式和哨兵模式(Sentinel)在自动故障转移方面有一些关键…

Java最新面试宝典 SpringMVC面试题)

Java最新面试宝典 SpringMVC面试题 前言1、什么是SpringMVC?2、SpringMVC 的优点?3、Spring MVC配置步骤?4、SpringMVC工作原理了解吗?5、Spring MVC 核心组件的功能?6、B/S 系统标准的三层架构是什么?7、C…

计算机网络:深入探索HTTP

引言: HTTP,全称超文本传输协议(Hypertext Transfer Protocol),是互联网上数据通信的基础。它定义了客户端(如浏览器)和服务器之间如何交互和传输数据。HTTP最初是为了支持Web浏览而设计的&…

1200页文档笔记,java数据库面试问题

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作心目中最好的Java项目,没有之一。 **可以毫不夸张…

MySQL篇—持久化和非持久化统计信息介绍(第一篇,总共三篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

c++委托构造函数与类的类型自动转换

前言 记录看书复习到的2个知识点 委托构造函数类类型自动转换 c11标准之后,类允许初始化数据成员,但是根据抽象派(老派)人员的观点,类一个抽象的东西,怎么能有具体的数值呢,就算要有默认数据…

送给2024数学建模参赛者20句话,学到就是赚到!

新学期来临,又到了备战数学建模竞赛火热时期,昨天为大家分享了常见的高含金量数模赛事,结合往届数学建模竞赛常见的问题及误区,数乐君给数模乐园铁粉们总结了20条数学建模竞赛参赛忠告,比赛期间绝对可以用到&#xff0…

C#单向链表实现:使用泛型的方法设计

目录 1.先设计一个泛型节点类Node 2.再设计一个泛型链表类LinkedList 3.创建一个LinkedList类的实例 4.完整的实例 再发一篇使用泛型的方法设计单向链表。 以下是一个使用泛型节点类和LinkedList<T>类的示例&#xff0c;其中包含Insert方法用于插入新节点&#xff0c…

Maya笔记 设置工作目录

Maya会把素材场景等自动保存在工作目录里&#xff0c;我们可以自己定义工作目录 步骤1 创建workspace.mel文件 文件/设置项目 ——>选择一个文件夹&#xff0c;点击设置——>创建默认工作区 这一个后&#xff0c;可以在文件夹里看到.mel文件 步骤2 自动创建文件夹…

[java]23种设计模式之工厂模式

用女蜗造人阐述工厂模式 1.1 一个工厂模式 现在女娲要造人&#xff0c;她要造三种人&#xff1a;白种人、黄种人和黑种人。怎么造呢&#xff1f;她得有个能产生人类的工厂吧&#xff08;类似于八卦炉的东西&#xff09;&#xff0c;这个工厂得让她生产出不同的人种。每个人都有…

Python把excel内容保存为图片(非统计图而是纯原表格数据)

一、引入 excel2img 库&#xff0c;没有的话使用 pip install excel2img进行安装 二、采用如下方法进行图片生成 excel文件名为&#xff1a;111.xlsx excel表格里面的sheet名称列表为 [Sheet1, Sheet2] 最终保存为以sheet名称.png的图片 支持跨表格合并项 import excel2i…

Java 学习和实践笔记(23):继承(extends)的概念以及instanceof的使用

面向对象编有三大特征&#xff0c;分别是继承、封装和多态。本节重点讲继承的概念以及instanceof的使用。 继承是面向对象编程的三大特征之一。继承让我们更加容易实现类的扩展。实现代码的重用&#xff0c;不用再重新发明轮子(don’t reinvent wheels)。 继承有两个主要作用:…

Python网络协议和漏洞甄别网络安全之二

要点 Python套接字socket和HTTP网络编程&#xff0c;使用四种方式构建HTTP客户端&#xff0c;建立服务器和客户端&#xff0c;端口扫描服务器脚本应用方式&#xff1a;二分法搜索&#xff0c;socket应用&#xff0c;DNSPython使用交互文件系统服务器&#xff1a;FTP&#xff0…

当Web3叙事寒冬到来,游戏是否是冬日里的“一把火”?

出品&#xff5c;欧科云链研究院 作者&#xff5c;Jason Jiang 以太坊创始人Vitalik在2019年曾说&#xff1a;金融与游戏会是区块链最先落地的场景。 在DeFi金融创新驱动上个周期后&#xff0c;沉寂近两年的Web3游戏板块&#xff0c;如今似乎也在复苏。无论是频繁获得融资&a…