• python-8错误调试测试


    1-错误处理

    import logging
    try:
        print('try.......')
        r = 10/0
    except ValueError as e:
        print('result:', e)
    except ZeroDivisionError as e:
        print('ZeroDivisionError:',e)
        logging.exception(e) #记录错误信息
    else:
        print("no error!")
    finally:
        print("finally....")
    print('End')

    Python所有的错误都是从BaseException类派生的,常见的错误类型和继承关系看这里:
    https://docs.python.org/3/library/exceptions.html#exception-hierarchy

    2-调试

      2.1 抛出错误

    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.2 打印错误信息

    #print()最大的坏处将来还得删除它
    def foo1(s):
        n = int(s)
        assert n != 0, 'n is zero!' #assert断言
        return 10 / n
    
    foo1('0') 
    #调用: $ python -O err.py  用-O参数来关闭assert
    import logging
    logging.basicConfig(level=logging.INFO)
    logging.info('hello word!!!!!') #记录信息
    #级别,有debug,info,warning,error等几个级别

    IDE
    如果要比较爽地设置断点、单步执行,就需要一个支持调试功能的IDE。目前比较好的Python IDE有:
    Visual Studio Code:https://code.visualstudio.com/,需要安装Python插件。
    PyCharm:http://www.jetbrains.com/pycharm/
    另外,Eclipse加上pydev插件也可以调试Python程序。

    3-单元测试

    import unittest
    class TestDict(unittest.TestCase):
        def test_init(self):
            d = Dict(a=1, b='test')
            self.assertEqual(d.a, 1)
            self.assertEqual(d.b, 'test')
            self.assertTrue(isinstance(d, dict))
        def test_keyerror(self):
            d = Dict()
            with self.assertRaises(KeyError): #期待抛出指定类型的Error(KeyError)
                value = d['empty']

    运行单元测试
     $ python -m unittest mydict_test

    或者

    if __name__ == '__main__':
    unittest.main()

    $ python mydict_test.py

     4-文档注释

    class Dict(dict):
        '''
        Simple dict but also support access as x.y style.
    
        >>> d1 = Dict()
        >>> d1['x'] = 100
        >>> d1.x
        100
        >>> d1.y = 200
        >>> d1['y']
        200
        >>> d2 = Dict(a=1, b=2, c='3')
        >>> d2.c
        '3'
        >>> d2['empty']
        Traceback (most recent call last):
            ...
        KeyError: 'empty'
        >>> d2.empty
        Traceback (most recent call last):
            ...
        AttributeError: 'Dict' object has no attribute 'empty'
        '''
  • 相关阅读:
    Linux常用命令
    jQuery
    NPM 常用命令
    Linux中mkdir和touch命令区别
    linux下cat命令详解
    时间
    es5中foreach的用法
    简单的下拉框制作
    window内置对象学习
    [Leetcode]5.Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/qinzb/p/9039435.html
Copyright © 2020-2023  润新知