【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 = 2
        self.list_1 = [4, 2, 7, 8, 4, 0]
        print("开始")
    def test_case1(self):
        self.assertIn(2, self.list_1)  # 断言self.data中是否包含2
        print("测试用例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, 2
        self.assertEqual(a, b)  # 断言n是否等于2
        print("测试用例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、测试执行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GIS分析交通事故

确定交通事故的集中区域对于制定新的战略以最大限度地减少事故具有重要作用。在本研究中,我们将使用核密度分析来检测交通事故集中的区域。 下载显示 2018 年至 2020 年期间北卡罗来纳州凯里市发生的交通事故的点数据。 我们可以看到,数据使用的是地理坐…

每日五道java面试题之java基础篇(十二)

目录: 第一题 谈谈你对AQS的理解,AQS如何实现可重⼊锁?第二题. Sychronized的偏向锁、轻量级锁、重量级锁第三题 CountDownLatch和Semaphore的区别和底层原理第四题 线程池中阻塞队列的作⽤?为什么是先添加列队⽽不是先创建最⼤线程&#xff…

【设计模式】使用装饰器模式对价格计算功能做灵活的拓展

文章目录 1. 概述2.实现方式2.1.原始商品类及计算接口2.2.加入装饰器2.3.装饰器的组合使用 3.总结 1. 概述 装饰器模式(Decorator Pattern)是一种结构型的设计模式,使用组合的方式来替代了继承,它的核心作用是在不修改对象本身的…

值得收藏的的适用于 Windows 11 的免费数据恢复软件榜单

终于要说到Windows 11了,有太多令人惊叹的功能,让人跃跃欲试。但是,在升级到 Windows 11 或使用 Windows 11 时,人们可能会因计算机问题而导致文件被删除或丢失。这就是为什么需要 Windows 11 的免费文件恢复的原因。这是适用于 W…

一周学会Django5 Python Web开发-项目配置settings.py文件-其他配置

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python we…

C++ //练习 7.27 给你自己的Screen类添加move、set和display函数,通过执行下面的代码检验你的类是否正确。

C Primer&#xff08;第5版&#xff09; 练习 7.27 练习 7.27 给你自己的Screen类添加move、set和display函数&#xff0c;通过执行下面的代码检验你的类是否正确。 Screen myScreen(5, 5, X); myScreen.move(4, 0).set(#).display(cout); cout<<"\n"; myScr…

开源C语言库Melon:Cron格式解析

本文介绍开源C语言库Melon的cron格式解析。 关于 Melon 库&#xff0c;这是一个开源的 C 语言库&#xff0c;它具有&#xff1a;开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 cron也就是我们常说的Crontab中的时间格式&#xff0c;格式如…

Debezium发布历史136

原文地址&#xff1a; https://debezium.io/blog/2023/01/06/change-data-capture-with-questdb-and-debezium/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Change Data Capture with QuestDB and Debezium …

【NI-DAQmx入门】处理数据采集和测试系统中噪声的几种主要方法

在实际的测试系统中测量模拟信号并不总是像将信号源连接到测量设备那么简单。数据完整性取决于被控制和监视的电气设备发送和接收的干净的电信号。 电噪声可能会掩盖电信号并使其无法识别&#xff0c;从而损害原本具备功能的 DAQ 系统。数据采集​​是关键任务应用测试系统的一…

深入浅出了解谷歌「Gemini大模型」发展历程

Google在2023年12月官宣了Gemini模型&#xff0c;随后2024年2月9日才宣布Gemini 1.0 Ultra正式对公众服务&#xff0c;并且开始收费。现在2024年2月14日就宣布了Gemini 1.5 Pro&#xff0c;史诗级多模态最强MoE首破100万极限上下文纪录&#xff01;&#xff01;&#xff01;Gem…

语音唤醒——

文章目录 配置主代码 参考文档&#xff1a;https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY&#xff1a;需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …

如何修复Microsoft Edge不能以全屏模式打开​?这里提供几个故障排除方法

随着越来越多的Windows 10用户将Edge设置为默认浏览器&#xff0c;各种错误和小故障层出不穷。例如&#xff0c;许多用户抱怨他们无法在全屏模式下启动Edge。如果你正在寻找解决方案来解决这个恼人的问题&#xff0c;请按照下面的故障排除步骤进行操作。 修复Microsoft Edge不…

内容检索(2024.02.17)

随着创作数量的增加&#xff0c;博客文章所涉及的内容越来越庞杂&#xff0c;为了更为方便地阅读&#xff0c;后续更新发布的文章将陆续在此汇总并附上原文链接&#xff0c;感兴趣的小伙伴们可持续关注文章发布动态&#xff01; 本期更新内容&#xff1a; 1. 信号完整性理论与…

JavaWeb:关于登录认证的简单拓展

前提介绍 本文基于文章-------JavaWeb&#xff1a;SpringBootWeb登录认证 --黑马笔记 -------再做简单拓展 如果没有关于登录认证知识的基础&#xff0c;可以先看上面所说的的文章&#xff0c;文章在专栏javaweb中&#xff0c;下面我为了大家观看&#xff0c;直接放了链接。…

代码随想录刷题笔记 DAY 28 | 复原 IP 地址 No.93 | 子集 No.78 | 子集 II No.90

文章目录 Day 2801. 复原 IP 地址&#xff08;No. 93&#xff09;1.1 题目1.2 笔记1.3 代码 02. 子集&#xff08;No. 78&#xff09;2.1 题目2.2 笔记2.3 代码 03. 子集 II&#xff08;No. 90&#xff09;3.1 题目3.2 笔记3.3 代码 Day 28 01. 复原 IP 地址&#xff08;No. 9…

《读者》2023-18:定力决定你能走多远

定力决定你能走多远 - 董宇辉 我苦练英语很长时间之后&#xff0c;有一次上口语课&#xff0c;老师让我回答问题。 我回答完&#xff0c;老师说&#xff0c;没想到你的口语还挺好的。 我突然感觉自己的付出被看见了&#xff0c;虽然它小到不值一提。 请你记住&#xff0c;很多小…

2024年华为OD机试真题-多段线数据压缩-Java-OD统一考试(C卷)

题目描述: 下图中,每个方块代表一个像素,每个像素用其行号和列号表示。 为简化处理,多段线的走向只能是水平、竖直、斜向45度。 上图中的多段线可以用下面的坐标串表示:(2, 8), (3, 7), (3, 6), (3, 5), (4, 4), (5, 3), (6, 2), (7, 3), (8, 4), (7, 5)。 但可以发现,这…

C++智能指针的冷知识!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家好呀&#xff0c;我是PingdiGuo_guo&#xff0c;今天我们来学习一下智能指针。 文章目录 1.智能指针的概念 2.智能指针的思想 3.智能指针的作用 3.1 自动内存管理 3.2 共享所有权 3.3 避免悬挂指针…

PyTorch使用Tricks:学习率衰减 !!

文章目录 前言 1、指数衰减 2、固定步长衰减 3、多步长衰减 4、余弦退火衰减 5、自适应学习率衰减 6、自定义函数实现学习率调整&#xff1a;不同层不同的学习率 前言 在训练神经网络时&#xff0c;如果学习率过大&#xff0c;优化算法可能会在最优解附近震荡而无法收敛&#x…

PowerPoint安装IguanaTex插件

1 前提 电脑已经配置好Latex环境 2 安装过程 2.1 下载IguanaTex_v1_56插件 官网下载地址 下载的文件格式为&#xff1a;IguanaTex v1.56 (.ppam) .ppam 2.2 移动插件 将IguanaTex v1.56 .ppam移动到C:\Users\ 你的用户名\AppData\Roaming\Microsoft\AddIns目录下。 2.3 …