Python基础(九)------错误异常处理及测试
2020-01-12 18:58
691 查看
Python数据类型之数值、字符串和列表
目录
1.错误类型
语法错误:syntax error 语义错误 逻辑错误
2.异常处理
try: 可能出现的异常代码 except 异常类型 as 实例: 捕获特定异常信息 else: 未遭遇异常 finally:不论是否遇到异常均会执行
try: x = 5/0 print(x) except ZeroDivisionError as e: #如果是ZeroDivisionError错误,e是错误信息 print('不能除以0',e) except: #其他错误 print("其他错误") else: #没有错误 print('没有异常') finally: #finally中的内容最后一定会执行,常用于资源释放等 print('这个代码块最终一定会执行')
不能除以0 division by zero 这个代码块最终一定会执行
raise: 手动抛出异常
def method(): raise NotImplementedError('该方法尚未实现') method()
Traceback (most recent call last): File "C:/Users/666/Desktop/demo/demo.py", line 4, in <module> method() File "C:/Users/666/Desktop/demo/demo.py", line 2, in method raise NotImplementedError('该方法尚未实现') NotImplementedError: 该方法尚未实现
3.测试
假设事先定义好了一个main方法:
def get_formatted_name(first,last): full_name = "{} {}".format(first,last) return full_name.title()
对main方法进行测试用例:
class NameTestCase(unittest.TestCase): #继承unittest.TestCase基类 def test_title_name(self): formatted_name = get_formatted_name('tom','lee') self.assertEqual(formatted_name,"Tom Leee") if __name__ == '__main__': unittest.main()
F ====================================================================== FAIL: test_title_name (__main__.NameTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:/Users/666/Desktop/demo/demo.py", line 7, in test_title_name self.assertEqual(formatted_name,"Tom Leee") AssertionError: 'Tom Lee' != 'Tom Leee' - Tom Lee + Tom Leee ? + ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (failures=1)
4.测试级别
1.单元测试
性质: 对代码最基本单元(函数、方法)的测试 给予给定条件判断结果是否符合预期 简化了测试任务 通过unittest模块实现
import unittest def add(a,b): return a + b def substract(a,b): return a - b class MyTest(unittest.TestCase): def test_add(self): self.assertEqual(20 , add(5,15)) #断言是否相等 def test_substract(self): self.assertEqual(-10 , substract(5,15)) if __name__ == '__main__': unittest.main() #调用unittest中的main方法执行测试
测试结果
Testing started at 16:45 ... C:\Applications\Anaconda3\python.exe "C:\Applications\JetBrains\PyCharm 2019.2.2\helpers\pycharm\_jb_pytest_runner.py" --path C:/Users/666/Desktop/demo/demo.py Launching pytest with arguments C:/Users/666/Desktop/demo/demo.py in C:\Users\666\Desktop\demo ============================= test session starts ============================= platform win32 -- Python 3.7.4, pytest-5.2.1, py-1.8.0, pluggy-0.13.0 -- C:\Applications\Anaconda3\python.exe cachedir: .pytest_cache rootdir: C:\Users\666\Desktop\demo plugins: arraydiff-0.3, doctestplus-0.4.0, openfiles-0.4.0, remotedata-0.3.2 collecting ... collected 2 items demo.py::MyTest::test_add PASSED [ 50%] demo.py::MyTest::test_substract PASSED [100%] ============================== 2 passed in 0.02s ============================== Process finished with exit code 0
5.代码组织
1.断言
常用: assertEqual(值,表达式) 是否相等 assertTrue() 是否为真 aseertIn() 是否包含 assertAlmostEqua() 是否几乎相等 (例如用于浮点型计算) assertIs() 是否为同一引用 assertIsInstance() 是否为某类型实例 assertGreater() 是否大于 ...
import unittest person = {'name':'Mike','age':20} numbers = [1,2,66,444] s = 'www.baidu.com' class TestAssert(unittest.TestCase): def test_assert_method(self): self.assertEqual('Mike',person.get('name')) self.assertTrue('baidu' in s) self.assertIn('www.baidu',s) self.assertAlmostEqual(4.4,1.1+3.3) self.assertIs(True+1,2) self.assertIsNone(person.get('Name')) self.assertIsInstance(numbers[0],int) self.assertGreater(-7 , 1) if __name__ == '__main__': unittest.main()
2.装置
测试用例类继承字 unittest.TestCase test_定义功能测试函数名 setUp() 函数定义准备初始化代码 tearDown() 函数执行清理工作
import unittest from demo import Calculator class Test(unittest.TestCase): def setUp(self): #初始化作用,用于为测试做准备 self.c = Calculator(5,3) def test_add(self): self.assertEqual(8,self.c.add()) def test_subtract(self): self.assertEqual(4,self.c.subtract()) def tearDown(self): #函数执行清理工作,例如释放资源 del self.c if __name__ == '__main__': unittest.main()
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python基础(十)------错误异常处理及测试
- 【python】错误/异常处理,调试,测试
- python基础知识整理——错误以及异常处理
- Python 基础 ——异常与错误处理
- [Python进阶-6]错误异常处理,断言assert,日志logging,单元测试,文档测试
- python错误处理记录完整的异常堆栈信息
- python 常见异常错误处理
- 错误处理与异常抛出_Swift基础知识学习
- 零基础入门学习Python(33)--异常处理:你不可能总是对的2
- 极限测试之Matlab与Forcal的错误(异常)处理
- python基础5--异常处理与调试
- Python基础--第7章 错误与异常——调教出听话的程序
- .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]
- Python基础:异常及异常的处理
- python基础5之错误处理
- Python 错误异常及代码测试
- python基础-random、os模块、异常处理模块
- python学习(二)之文件处理与错误异常
- Python异常处理方面的一些基础知识。
- Python中的异常处理相关语句基础学习笔记