目录
- 专栏列表
- 前言
- 一、Python中的测试
- 1.1 单元测试
- 1.1.1 定义测试类
- 1.2.1 安装 `pytest`
- 1.2.2 编写测试
- 1.2.3 运行测试
- 二、Python中的异常捕获
- 2.1 常规代码
- 2.2 异常基础
- 三、抛出异常(异常传播)
- 四、 自定义异常
专栏列表
- Python教程(一):环境搭建及PyCharm安装
- Python 教程(二):语法与数据结构
- Python 教程(三):字符串特性大全
- Python 教程(四):Python运算符合集
- Python 教程(五):理解条件语句和循环结构
- Python 教程(六):函数式编程
- Python 教程(七):match…case 模式匹配
- Python 教程(八):高级特性【高逼格代码】
- Python 教程(九):内置模块与第三方模块
- Python教程(十):面向对象编程(OOP)
正文开始
,如果觉得文章对您有帮助,请帮我三连+订阅,谢谢
💖💖💖
前言
在软件开发过程中,测试和异常捕获是两个非常重要的环节。测试可以帮助我们确保代码的正确性,而异常捕获则可以提高代码的健壮性和容错性。本篇文章将详细介绍Python中的测试方法和异常捕获机制,并通过实例帮助你更好地理解和应用这些知识。
一、Python中的测试
1.1 单元测试
单元测试是对软件中的最小可测试单元进行验证的测试。Python中有一个内置模块 unittest
,用于编写和运行单元测试。
1.1.1 定义测试类
首先,我们需要定义一个测试类,并继承 unittest.TestCase
。
复制并运行下列代码,unittest
会自动查找继承了 unittest.TestCase
的类,并执行其中的测试方法。
import unittest
def hello(w):
return f'Hello {w}!'
class TestMathOperations(unittest.TestCase):
def test_hello(self):
self.assertEqual(hello('ziyu'), 'Hello ziyu!')
def test_subtraction(self):
self.assertEqual(5 - 3, 1)
if __name__ == '__main__':
unittest.main()
1.2.1 安装 pytest
pip install pytest
1.2.2 编写测试
创建 pytest-demo.py
文件 ,编写测试不需要继承任何类,只需定义以 test_
开头的函数。
def hello(w):
return f'Hello {w}!'
def test_hello():
assert hello('ziyu') == 'Hello ziyu!'
def test_subtraction():
assert 5 - 3 == 1
1.2.3 运行测试
在终端运行 pytest
命令,pytest
会自动查找并运行所有以 test_
开头的测试函数。
pytest .\test-demo\pytest-demo.py
二、Python中的异常捕获
何为异常:完全无法在程序运行过程中预测的
异常会让我们程序中断,不能继续运行,这就是我们通常所说的bug,bug是必须修复的。
2.1 常规代码
程序被中断,后面的代码不会被执行
print('程序开始...')
r = 10 / 0
print('打印结果:', r)
print('后续逻辑。。。。')
2.2 异常基础
在Python中,异常是指在程序运行过程中发生的错误。我们可以使用 try
、except
、else
和 finally
关键字来捕获和处理异常。
try:
# 可能发生异常的代码
x = 1 / 0
except ZeroDivisionError as e:
# 处理异常
print(f"出错了: {e}")
else:
# 没有发生异常时执行的代码
print("上面代码完美运行")
finally:
# 无论是否发生异常都执行的代码
print("一定会执行的代码")
三、抛出异常(异常传播)
在Python中,
raise
是一个关键字,用于手动抛出一个异常。使用raise
可以触发异常处理机制,这在你需要对错误条件进行显式控制时非常有用。以下是raise
的使用:
def foo():
raise Exception('服务器内部错误') # 抛出异常
def bar():
print('bar ...')
foo() # 获取到异常,但是没用使用try 。。 捕获,导致函数中断执行
print('bar done')
try:
bar()
except Exception as e:
print(e) # 最外层捕获
finally:
print('程序结束了')
四、 自定义异常
Python的错误其实也是class
,所有的错误类型都继承自Exception
,所以在使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。
我们可以定义自己的异常类,通过继承
Exception
类实现。
class CustomError(Exception):
pass
def coo():
raise CustomError('网络错误。。。')
try:
print('自定义错误测试。。。')
coo()
except CustomError as e:
print(f"捕获自定义错误: {e}")