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

相关推荐
nbsaas-boot36 分钟前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
仗剑_走天涯38 分钟前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
chao_78940 分钟前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
chao_7895 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
烛阴6 小时前
Python装饰器解除:如何让被装饰的函数重获自由?
前端·python
noravinsc6 小时前
django 一个表中包括id和parentid,如何通过parentid找到全部父爷id
python·django·sqlite
ajassi20006 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化
沉默媛7 小时前
如何安装python以及jupyter notebook
开发语言·python·jupyter
Deng9452013148 小时前
基于Python的旅游数据可视化应用
python·numpy·pandas·旅游·数据可视化技术
2401_878624798 小时前
pytorch 自动微分
人工智能·pytorch·python·机器学习