当前位置: 首页 > news >正文

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>2self.assertGreater(4,2)print("测试test_ccc执行结束")def test_aaa(self):a = Trueself.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>2self.assertGreater(4,2)print("测试test_ccc执行结束")def test_aaa(self):a=Trueself.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")

查看执行结果

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

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

相关文章:

  • 机器学习笔记 - 基于百度飞桨PaddleSeg的人体分割模型以及TensorRT部署说明
  • 【C++初阶(十)】set、map、multiset、multimap的介绍及使用
  • 【Qt】获取当前系统用户名:9种获取方式
  • 有趣的小算法
  • 可可爱爱的羽绒服,面料是三防的哦
  • 高级算法设计与分析练习1-10
  • matlab基于线性二次调节器(LQR)法实现机器人路径规划可变轨迹跟踪
  • Leetcode 第 110 场双周赛 Problem D 2809. 使数组和小于等于 x 的最少时间(DP+贪心+正难则反)
  • 分布式架构demo
  • IP地理定位技术的服务内容详解
  • windows ce Remote Process Explorer定位程序崩溃地址
  • k8s部署jenkins
  • 算法——滑动窗口
  • FastAPI中如何调用同步函数
  • 【干货】接口公共方法(字典表查询)
  • [译] 怎样写一个基础的编译器
  • 【5+】跨webview多页面 触发事件(二)
  • CEF与代理
  • Consul Config 使用Git做版本控制的实现
  • CSS 三角实现
  • django开发-定时任务的使用
  • HTTP那些事
  • HTTP中的ETag在移动客户端的应用
  • Java小白进阶笔记(3)-初级面向对象
  • jQuery(一)
  • Laravel5.4 Queues队列学习
  • Python实现BT种子转化为磁力链接【实战】
  • 爱情 北京女病人
  • 从tcpdump抓包看TCP/IP协议
  • 大主子表关联的性能优化方法
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 嵌入式文件系统
  • 用quicker-worker.js轻松跑一个大数据遍历
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #define
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.13) SiK无线电高级配置(六)
  • (2)(2.10) LTM telemetry
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (分布式缓存)Redis分片集群
  • (九)信息融合方式简介
  • (四)Linux Shell编程——输入输出重定向
  • (原)Matlab的svmtrain和svmclassify
  • (转)visual stdio 书签功能介绍
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .htaccess 强制https 单独排除某个目录
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net framework profiles /.net framework 配置
  • .net 设置默认首页