美文网首页【学习记录】Python
【学习记录】Python3版本(8:错误调试和测试)

【学习记录】Python3版本(8:错误调试和测试)

作者: 天有三光 | 来源:发表于2020-03-08 15:07 被阅读0次

错误调试和测试

由于出错返回的值可能与正常值混杂在一起,带来不便,因此,python中有各种函数来返回程序错误的信息。


错误处理

1 try运行

try:来运行一段代码,运行到错误的地方则暂停返回错误信息

>>> try:
    r=10/0
except ZeroDivisionError as e:#有很多不同的except语句来处理不同的错误
    print('except',e)#在except语句后还可以有一个else语句。类似于ifelse
finally:#可以没有finally语句
    print('Fine')

except division by zero#错误未发生时不会执行except语句
Fine

错误与其继承关系:链接
不需要在所有可能出错的地方设except。

2 调用堆栈

如果错误没有捕获,那么会一直上抛溯源,直到找到源头,返回错误。
这是我们一般直接使用idle或者编译器会给出的反馈。
这种方式,在遇到一个错误之后就会找到错误的根源然后退出程序。

3 记录错误

import logging

def foo(s):
    return 10/int(s)

def bar(s):
    return 2*foo(s)

def main():
    try:
        bar('0')
    except Exception as e:
        logging.exception(e)

main()
print('end')

idle界面

ERROR:root:division by zero
Traceback (most recent call last):#错误溯源
  File "D:/ZQC/2020寒假学习计划/python/Sy_15_ExploreError.py", line 13, in main
    bar('0')
  File "D:/ZQC/2020寒假学习计划/python/Sy_15_ExploreError.py", line 9, in bar
    return 2*foo(s)
  File "D:/ZQC/2020寒假学习计划/python/Sy_15_ExploreError.py", line 6, in foo
    return 10/int(s)
ZeroDivisionError: division by zero#错误原因
end#程序继续运行,打印end

3 抛出错误

由于错误是一种类,因此,我们可以自己定义一个错误类型。
但是我们一般不这么搞。

作业:

int改为float即可。


调试

罗马不是一天建成的,只吃第四个包子是不可能饱的。因此,程序就有不可避免的调试过程。据(个人梦里)统计,100%的 程序员都写过BUG。

1 老方法,一个个print出来

2 assert

凡是可以用print的都可以用assert

def str2num(s):
    assert float(s)!=0,'n is zero'#n是0时执行‘n is zero!’语句。
    return float(s)

但是assert语句可以通过参数关闭,关闭后就可以当成pass来看待。虽然我觉得这个还是很难受吧。

3 logging

logging语句的好处在于可以自由选择输不输出错误信息,将错误信息输送到哪里(它不会抛出错误,仅仅只是记录错误)。

4 pdb

python调试器pdb,程序以单步方式运行。
pbd.set_trace()可以设置断点运行。

5 IDE

算了好麻烦啊,憋在idle上狗着了,Pycharm真香!


单元测试

对一个模块/类/函数的功能进行测试
就是你自己编写一个测试类来对程序进行测试。(大概)


文档测试

嗐现在好像还用不到,pass。

相关文章

  • 【学习记录】Python3版本(8:错误调试和测试)

    错误调试和测试 由于出错返回的值可能与正常值混杂在一起,带来不便,因此,python中有各种函数来返回程序错误的信...

  • Python学习记录之:错误、调试和测试

    错误处理 常见的错误类型和继承关系看这里:https://docs.python.org/2/library/ex...

  • Python 学习笔记8 - 错误、调试和测试

    错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码 用错误码来表示是否出错十分不便,因为函...

  • 软件测试理论

    测试和调试的区别 测试:发现程序的错误 调试:定位和纠正错误(保证软件的正常运行) 软件的危机 软件开发的费用超支...

  • 错误、调试和测试

    错误处理 在程序运行的过程中,如果发生错误,可以事先约定返回一个错误代码,这样就可以知道是否有错,以及出错的原因。...

  • 错误、调试和测试

    高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...

  • 错误、调试和测试

    错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原...

  • Python3(9) Python 错误、调试和测试

    本系列主要学习Python的基本使用和语法知识,后续可能会围绕着AI学习展开。Python3 (1) Python...

  • 01学习记录Python

    学习记录,欢迎指出错误 Python3基础语法 编码 默认情况下,Python源码文件是以UTF-8编码,所有字符...

  • Python学习之错误调试和测试

    在程序运行过程中,总会遇到各种各样的错误,Python内置了一套异常处理机制,来帮助我们进行错误处理。 错误处理 ...

网友评论

    本文标题:【学习记录】Python3版本(8:错误调试和测试)

    本文链接:https://www.haomeiwen.com/subject/oszuhhtx.html