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。

  • 相关阅读:
    topcoder srm 320 div1
    topcoder srm 325 div1
    topcoder srm 330 div1
    topcoder srm 335 div1
    topcoder srm 340 div1
    topcoder srm 300 div1
    topcoder srm 305 div1
    topcoder srm 310 div1
    topcoder srm 315 div1
    如何统计iOS产品不同渠道的下载量?
  • 原文地址:https://www.cnblogs.com/quanmeng/p/11887071.html
Copyright © 2011-2022 走看看