当前位置: 代码网 > it编程>前端脚本>Python > Python教程(十一):单元测试与异常捕获

Python教程(十一):单元测试与异常捕获

2024年08月06日 Python 我要评论
在软件开发过程中,测试和异常捕获是两个非常重要的环节。测试可以帮助我们确保代码的正确性,而异常捕获则可以提高代码的健壮性和容错性。本篇文章将详细介绍Python中的测试方法和异常捕获机制,并通过实例帮助你更好地理解和应用这些知识。首先,我们需要定义一个测试类,并继承。复制并运行下列代码,unittest会自动查找继承了的类,并执行其中的测试方法。w }!!')Python的错误其实也是class,所有的错误类型都继承自Exception。

专栏列表


在这里插入图片描述


前言

在软件开发过程中,测试和异常捕获是两个非常重要的环节。测试可以帮助我们确保代码的正确性,而异常捕获则可以提高代码的健壮性和容错性。本篇文章将详细介绍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中的异常捕获

2.1 常规代码

print('程序开始...')
r = 10 / 0
print('打印结果:', r)
print('后续逻辑。。。。')

在这里插入图片描述

2.2 异常基础

在python中,异常是指在程序运行过程中发生的错误。我们可以使用 tryexceptelsefinally 关键字来捕获和处理异常。

try:
    # 可能发生异常的代码
    x = 1 / 0
except zerodivisionerror as e:
    # 处理异常
    print(f"出错了: {e}")
else:
    # 没有发生异常时执行的代码
    print("上面代码完美运行")
finally:
    # 无论是否发生异常都执行的代码
    print("一定会执行的代码")

在这里插入图片描述

三、抛出异常(异常传播)

def foo():
    raise exception('服务器内部错误') # 抛出异常

def bar():
    print('bar ...')
    foo() # 获取到异常,但是没用使用try 。。 捕获,导致函数中断执行
    print('bar done')


try:
    bar()
except exception as e:
    print(e) # 最外层捕获
finally:
    print('程序结束了')

在这里插入图片描述

四、 自定义异常

class customerror(exception):
    pass

def coo():
    raise customerror('网络错误。。。')
try:
    print('自定义错误测试。。。')
    coo()
except customerror as e:
    print(f"捕获自定义错误: {e}")

在这里插入图片描述

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com