python错误调试和测试

错误调试和测试
在代码编写和运行过程中总会遇到各种错误,这是不可避免的;

  • 错误处理

1、错误基类BaseException类似java的try catch finally和Exception类;

try:
...
Except _ as _:
...
finally:

2、可以多层跨越处理,不用每一层都去捕获错误,只需要在适当的位置捕获一次就行了,因为错误没有捕获时,他就会一直往上抛,最后被python解释器捕获并打印错误信息;

  • 调用堆栈

利用打印的信息,查找错误出现在那里

  • 记录错误

Logging模块可以记录错误信息并打logging.exception(e)抛出错误(raise)

可根据自己的需要创建一个自定义错误,raise如果不带参数,就会把错误原样抛出,在except中raise一个Error,还可以把一种类型的错误转化成另外一种,但不建议乱来;
核心原则:我们应该清楚在什么位置出现什么错误;

  • 调试

1、断言(assert):可以用参数-0来控制assert,当参数为-0时assert相当于pass:

    assert n != 0, 'n is zero!'#n!=0时是Ture
    $ python3 -O err.py#参数控制

2、logging不会抛出错误,还可以输出到文件:logging.info(),且分为如下四个级别:Debug、Info、Warning、Error;

        logging.basicConfig(level=logging.INFO)

3、调试器pdb:python -m pdb err.py启动调试器;
输入1查看代码;
输入n单步执行代码;
輸入p查看变量;
输入q退出

4、pdb.set_trace()设置断点,再要需要地方放置一个断点即可;

  • 单元测试

1、用来对一个模块、一个函数或者一个类进行正确性的检测;
2、引入模块import unittest;
3、编写单元测试时,我们需要编写一个测试类,从unittest.TestCase继承;
4、test开偷才会被认为是测试方法;
5、最常用的断言方法:assertEqual();
6、运行单元测试;

if __name__ == '__main__':
    unittest.main()

7、setUp和tearDown
这两个方法会分别在每调用一个测试方法的前后分别被执行

  • 文档测试

Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试,doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确。只有测试异常的时候,可以用“…”表示中间一大段烦人的输出;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值