python单元测试框架unittest学习笔记四--断言
1、断言
什么是断言?断言是让程序来判断测试用例执行结果是否符合预期
2、unittest的断言,常见的断言方法:
序号 | 断言方法 | 断言描述 |
---|---|---|
1 | assertEqual(arg1, arg2, msg=None) | 验证arg1=arg2,不等则fail |
2 | assertNotEqual(arg1, arg2, msg=None) | 验证arg1 != arg2, 相等则fail |
3 | assertTrue(expr, msg=None) | 验证expr是true,如果为false,则fail |
4 | assertFalse(expr,msg=None) | 验证expr是false,如果为true,则fail |
5 | assertIs(arg1, arg2, msg=None) | 验证arg1、arg2是同一个对象,不是则fail |
6 | assertIsNot(arg1, arg2, msg=None) | 验证arg1、arg2不是同一个对象,是则fail |
7 | assertIsNone(expr, msg=None) | 验证expr是None,不是则fail |
8 | assertIsNotNone(expr, msg=None) | 验证expr不是None,是则fail |
9 | assertIn(arg1, arg2, msg=None) | 验证arg1是arg2的子串,不是则fail |
10 | assertNotIn(arg1, arg2, msg=None) | 验证arg1不是arg2的子串,是则fail |
11 | assertIsInstance(obj, cls, msg=None) | 验证obj是cls的实例,不是则fail |
12 | assertNotIsInstance(obj, cls, msg=None) | 验证obj不是cls的实例,是则fail |
3、示例
assertequal(参数1,参数2)
如果参数1,参数2的值相等,断言成功,否则断失败
两个参数,有一个存放实际结果,有一个存放预期结果
如果参数1 在参数2中,断言通过,否则断言失败
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Richard_Kong 4 """ 5 unitest的基本原理: 6 unitest是python自带的测试框架 7 unitest 是python的标准测试库 8 四大组件: 9 testcase:测试用例,方法命名基于test_开头,测试用例自行排序执行,排序规则A-Z,0-9 10 testfixture: 设置添置条件 setup ,后置条件 teardown,每个测试用例方法执行前后都要执行者两个方法 11 testsuit:测试套件,批量执行用例集,套件运行需要结合运行器 htmltestrunner/testtestrunner 12 test runner :运行器,通过test的run方法去调用执行测试用例集 13 unitest的语法规则: 14 用import unitest导入unitest模块 15 定义一个集成unittest.TestCase的测试用例类,如class XXX(unitest.TestCase) 16 即如果定义了则会在每个测试case执行前先执行setup方法,执行完毕后执行teardown方法 17 用例名 必须以test开头,否则unitest不能识别 18 一个测试用例应该只测试一个方面,测试的目的和测试内容应该很明确,主要是调用seertEqual\assertRaises等断言方法来 19 判断程序执行结果和预期值是否相符合 20 调用unnitest.main()启动测试 21 """ 22 import unittest 23 24 def sum(a,b): 25 return a+b 26 27 28 def setUpModule(): 29 print("setUpModule 函数被调用") 30 31 32 def tearDownModule(): 33 print("tearDownModule函数被调用") 34 35 36 class test01(unittest.TestCase): 37 @classmethod 38 def setUpClass(cls) -> None: 39 print("类方法setUpClass 被调用了") 40 @classmethod 41 def tearDownClass(cls) -> None: 42 print("类方法 tearDown 被调用了") 43 44 def setUp(self): 45 print("befor test the setUp function 被调用了") 46 47 def tearDown(self): 48 print("after test the teardown function 被调用了") 49 50 def test_01(self): 51 print("in function test 01") 52 53 def test_02(self): 54 print("in function test 02") 55 56 def test_03(self): 57 print(sum(1,8)) 58 59 def test_04(self): 60 num = sum(6,9) 61 self.assertEqual(num,12) 62 63 64 65 # def test_05(self): 66 # print(sum("aaa",9)) 67 68 69 if __name__ == '__main__': 70 unittest.main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具