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。

  • 相关阅读:
    竞赛备考建议
    谷山丰的一生
    从首个IMO季军谈起 作者 : 付云皓
    孔庆东:单刀赴高考
    LaTeX 技巧 802:国内期刊 CCT 模板编译经验
    数学书籍推荐
    翻译
    printf中用法详解
    黎活明给程序员的忠告【转】
    log4j2配置文件log4j2.xml详解(转载)
  • 原文地址:https://www.cnblogs.com/quanmeng/p/11887071.html
Copyright © 2011-2022 走看看