python使用unittest进行单元测试

文章目录

通过一种规范的测试方法,可以帮助我们在修改程序后能够快速的检测一些bug,使用unittest库的方法如下:

示例程序

py 复制代码
import unittest


class Demo01(unittest.TestCase):
    @classmethod
    def setUpClass(self) -> None:
        print("执行测试用例 - 整体初始化 - setUpClass")

    def setUp(self) -> None:  # 测试用例方法执行前的操作
        print('开始执行测试用例 - setUp')

    def tearDown(self) -> None:  # 测试用例方法执行前的操作
        print('结束执行测试用例 - tearDown')

    @classmethod
    def tearDownClass(cls) -> None:  # 测试用例方法执行后的操作
        print("执行测试用例 - 整体结束 - tearDownClass")

    def test_01(self):  # 测试用例
        print("测试用例1")
        self.assertEqual(1, 1)  # 测试断言

    def test_02(self):  # 测试用例
        print("测试用例2")
        self.assertEqual(2, 2)

    def test_03(self):  # 测试用例
        print("测试用例3")
        self.assertEqual(1, 2)


if __name__ == '__main__':
    unittest.main()

执行结果如下:

text 复制代码
执行测试用例 - 整体初始化 - setUpClass
开始执行测试用例 - setUp
测试用例1
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例2
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例3
结束执行测试用例 - tearDown


Ran 3 tests in 0.010s

FAILED (failures=1)


2 != 1

Expected :1
Actual   :2

.........

执行测试用例 - 整体结束 - tearDownClass

在执行测试用例的过程中:

  1. 在执行全部用例前会执行setUpClass,全部用例执行完成后会执行tearDownClass
  2. 每个用例在执行前会执行setUp,用例执行后会执行tearDown
  3. 每个需要执行的用例前都有一个前缀test,根据包含前缀的函数名称(比如testxxxx),就会被认定为是测试用例的一部分

更多assert方法

断言方法 检查条件
assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
assertlsInstance(a, b) isinstance(a, b)
assertNotIsInstance(a, b) not isinstance(a, b)

更多assert的方法请参考:https://docs.python.org/zh-cn/3/library/unittest.html#unittest.TestCase.assertEqual

相关推荐
高洁0121 分钟前
AI赋能产业升级与中美未来经济赛道博弈
人工智能·python·深度学习·机器学习·transformer
夜晚回家33 分钟前
Python 原始字符串详解 | r 前缀到底让什么不再转义
开发语言·python
用户019027581611 小时前
如何用 Python 计算 EMV 简易波动指标?
python
第25小时记录1 小时前
[2026] Linux安装教程
运维·python
前端 贾公子3 小时前
LangGraph == 图的状态(State)管理 (中)
开发语言·数据库·python
the局外人3 小时前
FastAPI中jwt的基本使用与实践
后端·python·fastapi
mklpo1473 小时前
为不支持sse4.2命令集的老旧设备制作Win11 26H2系统镜像,2026-10-11。
运维·windows·python
GoldenSpider.AI3 小时前
用 AI 改流程之前先做「四桶」体检:9 次返工里 8 次靠规则就能消掉(附 Python 发布前校验器)
人工智能·python·自动化·ai智能体
小白快快跑哦4 小时前
python-字符串全解(六):正则表达式-修饰符
python·正则表达式·修饰符