Unittest单元测试之unittest用例执行顺序

unittest用例执行顺序

当在一个测试类或多个测试模块下,用例数量较多时,unittest在执行用例 (test_xxx)时,并不是按从上到下的顺序执行,有特定的顺序。

unittest框架默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为: 0~9,A~Z,a~z。

对于类来说,class TestAxx 会优先于class TestBxx被执行。对于方法来说,test_aaa()方法会有优先于test_bbb()被执行。对于测试目录与测试文件来说,unittest同样是按照这个规则来加载测试用例的。

方式一、通过测试用例的方法名称:根据ACSII码的顺序加载测试用例

代码示例:

# 测试用例的执行顺序
# 1,通过测试用例的方法名称:根据ACSII码的顺序加载测试用例
import unittest
class Test_case(unittest.TestCase):
 
    # 进行初始化和清理工作
    def setUp(self):
        print("我是setUp方法,进行测试前的初始化工作")
    def tearDown(self) -> None:  # 表示该方法没有返回值
        print("我是tearDown方法,执行测试后的清除工作")
 
    # 测试用例
    def test_bbb(self):  # 判断是否在里面
        name = ["张飞","马怒","李四"]
        self.assertIn("马怒",name)
        print("测试test_bbb执行结束")
 
    def test_ccc(self):  # 判断4>2
        self.assertGreater(4,2)
        print("测试test_ccc执行结束")
 
    def test_aaa(self):
        a = True
        self.assertTrue(a)  # 判断是否为真
        print("测试test_aaa执行结束")
 
if __name__ == '__main__':
    unittest.main()

查看执行结果:

方式二、通过addtest()添加用例的顺序

代码示例:

# 测试用例的执行顺序
# 2,通过addtest()添加用例的顺序
import unittest
class Test_case(unittest.TestCase):
    # 进行初始化和清理工作
    def setUp(self):
        print("我是setUp方法,进行测试前的初始化工作")
    def tearDown(self) -> None:  # 表示该方法没有返回值
        print("我是tearDown方法,执行测试后的清除工作")
 
 
    def test_bbb(self):  # 判断是否在里面
        name = ["张飞","马怒","李四"]
        self.assertIn("马怒",name)
        print("测试test_bbb执行结束")
 
    def test_ccc(self):  # 判断4>2
        self.assertGreater(4,2)
        print("测试test_ccc执行结束")
 
    def test_aaa(self):
        a=True
        self.assertTrue(a)  # 判断是否为真
        print("测试test_aaa执行结束")
 
 
if __name__ == '__main__':
    suite = unittest.TestSuite()  # 测试套件实例
    suite.addTest(Test_case("test_bbb"))  # 类名(方法名称)
    suite.addTest(Test_case("test_aaa"))
    suite.addTest(Test_case("test_ccc"))
    unittest.main(defaultTest="suite")

查看执行结果

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

钢铁ERP系统有哪些?钢铁ERP软件哪家好用

不同的钢铁材料有差异化的产成品,而这些成品又有多元化的营销策略和制造工艺,每道生产工艺存在差异化的管理方式与策略,而不同的销售策略对应多样化的价格机制等,繁多的业务数据采集和分析工作量较大。 近些年制造工艺的变革也促…

线性表——(3)线性表的链式存储及其运算的实现

一、前言: 由于顺序表的存储特点是用物理上的相邻关系实现逻辑上的相邻关系,它要求用连续的存储单元顺序存储线性表中各数据元素,因此,在对顺序表进行插入、删除时,需要通过移动数据元素来实现,这影响了运行…

Java 线程同步和通信

Android 11 废弃了AsyncTask 线程 Thread: 通过start 开启 源码: start0 native方法 通过虚拟机跟操作系统交互 进程和线程区别: 进程是操作系统的独立区域,各个区域互不干扰,一个进程可以有多条线程同时工作,进程大于线程,线程依赖进程,线程间可以共享资源 Runnable: 接口…

利用 FormData 实现文件上传、监控网路速度和上传进度

利用 FormData 实现文件上传 基础功能:上传文件 演示如下: 概括流程: 前端:把文件数据获取并 append 到 FormData 对象中后端:通过 ctx.request.files 对象拿到二进制数据,获得 node 暂存的文件路径 前端…

用 LangChain 搭建基于 Notion 文档的 RAG 应用

如何通过语言模型查询 Notion 文档?LangChain 和 Milvus 缺一不可。 在整个过程中,我们会将 LangChain 作为框架,Milvus 作为相似性搜索引擎,用二者搭建一个基本的检索增强生成(RAG)应用。在之前的文章中&a…

华为电视盒子 EC6108V9C 刷机成linux系统

场景: 提示:这里简述项目相关背景: 家里装宽带的时候会自带电视盒子,但是由于某些原因电视盒子没有用,于是就只能摆在那里吃土,闲来无事,搞一下 问题描述 提示:这里描述项目中遇到…

[FC][常见Mapper IRQ研究]

本次IRQ研究了如下: VRC2&4(Mapper21,23,25) VRC3(Mapper73) VRC6(Mapper24 & Mapper26) VRC7(Mapper85) MMC3(Mapper4) MMC4(Mapper10) MMC5(Mapper5) Mapper18 Mapper64 Namco163(Mapper19) Sunsoft FME-7(Mapper69) 共计11种Mapper的IRQ操作使用例子 代码内有详细注…

【CANoe】CANoe工具使用-实现CAN通道的收、发、录、回放报文

目录 资源及目标 1. 配置工程 1.1 新建配置工程 1.2 配置两路CANoe虚拟通道 1.3配置CAN通道参数 1.3.1 配置CAN1类型(标准CAN或者CANFD),以及波特率(CANFD需要配置数据场和仲裁场两个段的波特率) 1.3.2配置CAN1…

电梯安全远程监控系统解决方案

一、方案背景 随着万丈高楼的平地起,电梯也成为了我们出入高层建筑最常用的工具之一。面对电梯数量的不断增加,电梯安全事故也是相继频发,因此关于电梯的安全运行就越来越受到社会各界的关注。电梯的使用在给人们出入高层建筑带来便利的同时&…

Normalizing Kalman Filters for Multivariate Time Series Analysis

l l l means latent state,LGM means ‘linear Gaussian state space models’ 辅助信息 作者未提供代码

高端网站设计公司 -蓝蓝设计数据可视化大屏服务

UI设计公司-蓝蓝设计(北京兰亭妙微科技有限公司)是一支由清华美院毕业的专业团队组成的设计公司。我们的设计师们在大屏科研信息软件UI设计领域拥有多年的工作经验和丰富的行业知识。我们对设计充满热爱,设计不仅是我们的专业和职业&#xff…

五、ZooKeeper的shell操作

目录 1、客户端连接 2、shell基本操作 2.1 操作命令

2023-12-02 LeetCode每日一题(拼车)

2023-12-02每日一题 一、题目编号 1094. 拼车二、题目链接 点击跳转到题目位置 三、题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整数 capacity 和一个数组 trips , trip[i] …

【SpringBoot3+Vue3】七【后续2】【番外篇】- (使用docke部署)

目录 一、maven打包后端服务 1、clean 2、package 3、查看jar包 二、部署java后端服务 1、使用dockerfile构建一个java17的镜像 1.1 使用dokcerfile构建容器命令 1.2 方式一 将jar打包进容器镜像 1.3 方式二 jar不打包进容器镜像,通过映射主机目录映射方式…

【数字图像处理】边缘检测

边缘检测是一种图像处理技术,用于在图像中识别和提取物体边缘的信息,广泛应用于计算机视觉和图像分析领域。本文主要介绍数字图像边缘检测的基本原理,并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1 边缘检测原理 2 FPGA 布署…

持续集成交付CICD:GitLabCI 运行前后端项目

目录 一、理论 1.spring项目自动构建 2.阿里云云效 Maven 3.Maven安装 4.Go安装 5.NPM安装 二、实验 1.GitLabCI 运行Maven项目 2.GitLabCI 运行Go项目 3.GitLabCI 运行NPM项目 三、问题 1.前端脚手架如何初始化项目 2.NPM下载如何指定 3.Go项目下载源如何指定 …

基于DigiThread的仿真模型调参功能

仿真模型调参是指通过调整模型内部的参数值,使仿真模型的输出更符合实际系统的行为或者预期结果的过程。 仿真过程中,往往需要频繁对模型参数进行调整,通过观察不同参数下系统整体的运行情况,实现系统的性能、可靠性和效率的优化…

UDP通信

UDP通信-快速入门 客户端程序 服务端程序 步骤 UDP通信-多发多收 客户端 服务端 步骤

Sentinel核心类解读:Node

基本介绍 Sentinel中的簇点链路是由一个个的Node组成的,Node是一个接口。Node中保存了对资源的实时数据的统计,Sentinel中的限流或者降级等功能就是通过Node中的数据进行判断的。 Sentinel中是这样描述Node的: Holds real-time statistics…

抑郁症中西医治疗对比?

抑郁症是一种常见的心理障碍,治疗方法包括中医和西医两种。下面就抑郁症中西医治疗进行对比: 治疗方法:中医治疗抑郁症强调整体观念和辨证论治,通过调理身体各部分的功能,达到治疗抑郁症的目的。中医治疗抑郁症多采用天…