unittest_认识unittest(1)
unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件。 使用unittest前需要了解该框架的五个概念: 即test case,test suite,test loader,test runner,test fixture。
- test case:一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前环境准备(setUp),执行测试(run),以及测试后环境的还原(tearDown)。
- test suite:多个测试用例的集合,测试套件或测试计划。
- test loader:加载TestCase到TestSuite中的,其中loadTestsFrom*()方法用于寻找TestCase,并创建它们的实例,然后添加到TestSuite中,返回TestSuite实例。
- test runner:执行测试用例,并将测试结果保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
- test fixture:一个测试用例执行前的环境准备以及执行后的环境还原就是一个fixture。
了解了概念后,我们来看一段简单的代码
import unittest class Demo(unittest.TestCase): @classmethod def setUpClass(cls) -> None: print("setUpClass被执行\n") @classmethod def tearDownClass(cls) -> None: print("tearDownClass被执行") def setUp(self) -> None: print("setup被执行") def tearDown(self) -> None: print("teardown被执行\n") def test_a(self): print("test_a被执行") def test_c(self): print("test_c被执行") def test_b(self): print("test_b被执行") a, b = 1, 2 assert a+b == 3 def d(self): print("d被执行") if __name__ == '__main__': unittest.main()
执行结果
从脚本和运行结果我们可以得到以下结论:
- 定义一个测试类时,要继承unittest.TestCase这个类
- setUpClass()和tearDownClass()在测试类执行前后只会被执行一次
- setUp()和tearDown()在测试类每个测试用例执行前后都会被执行一次
- 测试用例必须以test开头,否则不会被执行。
- 测试用例的执行顺序不是根据代码的先后顺序执行的,而是根据ASCII码的顺序执行的测试用例,ASCII码数字与字母的顺序为:0-9,A-Z,a-z。
执行流程大致如下
编写TestCase,由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,最后将运行的结果保存在TextTestResult中。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战