zoukankan      html  css  js  c++  java
  • python错误、调试和测试

    1.错误处理

    1)try...except...finally

    try:
        print('try...')
        r = 10 / int('a')
        print('result:', r)
    except ValueError as e:
        print('ValueError:', e)
    except ZeroDivisionError as e:
        print('ZeroDivisionError:', e)
    finally:
        print('finally...')
    print('END')

    2) 出错的时候,一定要分析错误的调用栈信息,才能定位错误的位置。

    3)Python内置的logging模块可以非常容易地记录错误信息

    4)raise抛出错误实例

    # err_raise.py
    class FooError(ValueError):
        pass
    
    def foo(s):
        n = int(s)
        if n==0:
            raise FooError('invalid value: %s' % s)
        return 10 / n
    
    foo('0')

    2.调试

    1)print

    2)assert

    3)logging

    和assert相比,不会抛出错误,且可以输出到文件

    import logging
    
    s = '0'
    n = int(s)
    logging.info('n = %d' % n)
    print(10 / n)
    import logging
    logging.basicConfig(level=logging.INFO)

    这就是logging的好处,它允许你指定记录信息的级别,有debuginfowarningerror等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debuginfo就不起作用了。

    4)pdb

    让程序以单步方式运行,随时查看运行状态

    5)pdb.set_trace()

    这个方法也是用pdb,但是不需要单步执行,我们只需要import pdb,然后,在可能出错的地方放一个pdb.set_trace(),就可以设置一个断点

    # err.py
    import pdb
    
    s = '0'
    n = int(s)
    pdb.set_trace() # 运行到这里会自动暂停
    print(10 / n)

    3)单元测试

    对一个模块、一个函数、一个类进行正确性检验的过程

    setUp和tearDown

    4)文档测试

    doctest非常有用,不但可以用来测试,还可以直接作为示例代码。通过某些文档生成工具,就可以自动把包含doctest的注释提取出来。用户看文档的时候,同时也看到了doctest。

  • 相关阅读:
    图像 resize 代码:保留 aspect ratio(长宽比)
    Pytorch lr_scheduler 中的 last_epoch 用法
    torch.optim用法(参数组的设置)
    课程式学习(Curriculum Learning)
    扇贝单词本-隐藏中文释义 tampermonkey
    电话号码正向标记认证网站申请地址
    考研英语做题计时器网页版(每隔3分钟播放声音,提醒计时)
    mac关闭自动更新后还在每天提醒进行安装更新
    mac 自动生成自签证书脚本
    Ditto
  • 原文地址:https://www.cnblogs.com/quanmeng/p/11887071.html
Copyright © 2011-2022 走看看