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

相关推荐
kida_yuan15 分钟前
【从零开始】13. 数据增强(Data Augmentation)
数据结构·python·nlp
封奚泽优1 小时前
班级互动小程序(Python)
python·deepseek
MediaTea1 小时前
Python:math 库函数手册(双曲函数)
开发语言·python
枫叶V1 小时前
用 FastAPI 实现大文件分片上传与断点续传(含可运行示例与客户端脚本,仅供参考)
python·fastapi
神仙别闹1 小时前
基于 Python + redis + flask 的在线聊天室
redis·python·flask
Python私教2 小时前
Django全栈班v1.01 Python简介与特点 20250910
后端·python·django
我想吃烤肉肉2 小时前
leetcode-python-2154将找到的值乘以 2
python·算法·leetcode
这里有鱼汤2 小时前
为什么指数涨你却亏钱?80%的人忽略的市场宽度指标揭晓,我用Python实现了(附源码)
后端·python
王琦03182 小时前
Python 0909
前端·javascript·python