【Python中unittest(单元测试)的简单应用】

1、unittest核心组成:

TestFixture对一个测试用例环境的搭建和销毁,一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。如可以在setUp()中通过建立数据库连接来初始化,在tearDown()中清除数据库产生的数据,关闭连接等

TestCase一个完整的测试流程,包括测试前的准备工作(setUp)、测试过程的代码、善后工作(tearDown)单元测试的本质就是一个测试用例,也就是一个完整的测试单元

TestSuite把多个测试用例集合在一起执行,就产生的测试套件的概念TestSuiteTestSuite用来组装单个测试用例。通过addTest()加载TestCase到TestSuite中,从而返回一个TestSuite实例

TestRunner用于测试执行一般单元测试框架中都会提供丰富的执行策略和执行结果在unittest单元测试框架中,通过TextTestRunner类提供的run()方法来执行测试套件/测试用例TestRunner可以使用图形界面、文本界面,或返回一个特殊的值等方式,来表示测试结果

2、unittest简单应用

import unittest
class UnitTest(unittest.TestCase):  # 创建继承类def setUp(self) -> None:  # 初始化,前置条件self.n = 2self.list_1 = [4, 2, 7, 8, 4, 0]print("开始")def test_case1(self):self.assertIn(2, self.list_1)  # 断言self.data中是否包含2print("测试用例1")def test_case2(self):self.assertTrue(self.n == 2)  # 断言条件是否为真print("测试用例2")def test_case3(self):self.assertFalse(self.n != 2)  # 断言条件是否为假print("测试用例3")def test_case4(self):self.assertNotEqual(self.n, 6)  # 断言是否不相等print("测试用例4")def test_case5(self):a, b = 2, 2self.assertEqual(a, b)  # 断言n是否等于2print("测试用例5")def tearDown(self) -> None:  # 环境还原,执行每个测试用例的后置条件print("结束")
if __name__ == "__main__":unittest.main()  # 执行当前文件所有test开头用例

3、unittest中suite套件运用

(1)执行用例方法一

if __name__ == "__main__":suite = unittest.TestSuite()  # 创建测试套件case_list = ['test_case1', 'test_case2', 'test_case3', 'test_case4', 'test_case5']for i in case_list:suite.addTest(UnitTest(i))  # 添加测试用例run0 = unittest.TextTestRunner(verbosity=2)# verbosity :表示测试报告信息的详细程度,一共三个值,默认是2# 0 ( 静默模式 ) :你只能获得总的测试用例数和总的结果,如:总共 100 个 失败 10 成功 90# 1 ( 默认模式 ) :类似静默模式,只是在每个成功的用例前面有个 . 每个失败的用例前面有个 F# 2 ( 详细模式 ) :测试结果会显示每个测试用例的所有相关的信息run0.run(suite)  # 执行套件中测试用例

(2)执行用例方法二

if __name__ == "__main__":suite = unittest.TestSuite()  # 创建测试套件suite.addTest(UnitTest('test_case1'))suite.addTest(UnitTest('test_case2'))suite.addTest(UnitTest('test_case3'))suite.addTest(UnitTest('test_case4'))suite.addTest(UnitTest('test_case5'))run0 = unittest.TextTestRunner(verbosity=2)run0.run(suite)  # 执行套件中测试用例

(3)执行用例方法三

if __name__ == "__main__":suite = unittest.TestSuite()#创建测试套件loader = unittest.TestLoader()# 创建一个加载对象suite .addTest(loader.loadTestsFromTestCase(UnitTest))run0 = unittest.TextTestRunner(verbosity=2)run0.run(suite)  # 执行套件中测试用例

4、测试执行结果:

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

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

相关文章

【c++】const引用

Hello everybody!今天给大家讲讲有关const引用部分的知识,因为这部分知识涉及到const与引用直接如何灵活的运用,且不太好理解。所以我认为讲一下这里的知识还是很有必要的! 1.权限可缩小 首先,当我们定义了a,在给a取别…

第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

3, ip::tcp::resolver 如果新浪的IP地址变了,该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn,因为它负责将人类可读的多种网址信息,一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构&…

安装faiss环境教程

文章目录 打开环境安装faiss环境检查已安装的环境切换环境至faiss 打开环境 source activate # 打开环境安装faiss环境 conda create -n faiss_env # 安装faiss环境检查已安装的环境 conda info --envs # 检查已安装的环境切换环境至faiss conda a…

谷歌浏览器输入地址后http自动转https解决方法

谷歌浏览器输入地址后http自动转https解决方法 点击地址栏旁边的锁,再点击网络设置往下拉,找到:不安全内容,默认是屏蔽状态,改为允许状态,再去访问http 点击地址栏旁边的锁,再点击网络设置 往下…

计算机服务器中了_locked勒索病毒怎么办?Encrypted勒索病毒解密数据恢复

随着网络技术的不断发展,数字化办公已经成为企业生产运营的根本,对于企业来说,数据至关重要,但网络威胁无处不在,近期,云天数据恢复中心接到很多企业的求助,企业的计算机服务器遭到了_locked勒索…

Java数字孪生智慧工地数据大屏APP项目源码

目录 智慧工地云平台核心功能 1.劳务管理 2.视频监控 3.安全教育 4.进度管理 5.环境监测 6.塔吊监控 7.升降机监控 8.工地广播 9.深基坑高支模 10.AI识别 11.安全质量 智慧工地建设的价值和意义 危大工程管理 智慧工地聚焦施工现场一线生产活动,利用物…

面试经典150题【1-10】

文章目录 面试经典150题【1-10】88. 合并两个有序数组27.移除元素26.删除有序数组中的重复项80.删除有序数组中的重复项II169.多数元素189.轮转数组121.买卖股票的最佳时机1122. 买卖股票的最佳时机 II55.跳跃游戏![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ff…

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢…

【c++】拷贝构造函数

1.特征 1.拷贝构造函数是构造函数的一个重载形式。 2.若显示定义了拷贝构造函数,编译器就不会自动生成构造函数了。 3.拷贝构造函数的参数只有一个且必须是类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。 4.若未显…

elementui 中 el-date-picker 控制选择当前年之前或者之后的年份

文章目录 需求分析 需求 对 el-date-picker控件做出判断控制 分析 给 el-date-picker 组件添加 picker-options 属性&#xff0c;并绑定对应数据 pickerOptions html <el-form-item label"雨量年份&#xff1a;" prop"date"><el-date-picker …

手写myscrapy(三)

我们现在具体讲解一下主要功能的实现 我们先定义一个接口类 名称&#xff1a;MyObject 主要定义需要实现的方法定义 代码如下&#xff1a; class MyObject(object):start_urls: Optional[list] Nonename: str Nonekeywords Falsecookies : dict Noneencode :str Nonetime…

TypeScript(一):TypeScript基本理解

TypeScript基本理解 为什么使用TS JavaScript发展至今&#xff0c;没有进行数据类型的验证而我们知道&#xff0c;在编程阶段&#xff0c;错误发现的越早越好而TS就解决了JS的这个问题 认识TypeScript TypeScript是拥有类型的JavaScript超级&#xff0c;它可以编译成普通、…