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

相关推荐
gmaajt31 分钟前
mysql如何检查数据库表是否存在损坏_使用CHECK TABLE命令修复
jvm·数据库·python
heRs BART1 小时前
【Flask】四、flask连接并操作数据库
数据库·python·flask
PyHaVolask1 小时前
Python 爬虫进阶:直接请求 JSON 接口与开发者工具使用
爬虫·python·请求头·反爬·json接口·chrome开发者工具
larance1 小时前
安装dify的几个问题
python
2301_773553621 小时前
CSS如何对用户访问过的链接进行降级颜色处理_使用-visited伪类改变颜色
jvm·数据库·python
2301_815279521 小时前
Golang怎么理解Go的sync.Pool底层_Golang如何理解Pool的本地缓存和GC清理机制【详解】
jvm·数据库·python
2301_764150561 小时前
MySQL迁移过程如何避免数据不一致_利用强一致性备份方案
jvm·数据库·python
m0_716430071 小时前
Redis如何处理预热失效引起的开局雪崩
jvm·数据库·python
m0_377618231 小时前
c++文件锁使用方法 c++如何实现多进程文件同步
jvm·数据库·python
gmaajt2 小时前
mysql多字段搜索如何设计组合索引_mysql索引查询加速
jvm·数据库·python