美文网首页【学习记录】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:错误调试和测试)

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