python:python代码调试

ernestwang 2 0

代码调试

  • 打印:print
    • 在需要的地方打印输出内容,以便观察程序的执行过程。
  • 断言:assert
    • 凡是使用print的地方都可以使用assert进行断言。
    • 示例:
    n = int(input('请输入一个整数:'))
    
    # 添加断言:断言语句出错后,会报AssertionError错,然后输出断言错误信息
    # 断言语句为真表示断言成功,为假表示断言失败
    assert n != 0, '出错了,除数为0'
    
    print(3 / n)
    • 总结:
      • 使用assertprint语句没有什么差别
      • 执行脚本是添加选项-O可以让解析器忽略断言,如:python -O xx.py
      • 忽略断言意思就是assert语句相当于pass
  • pdb
    • 说明:是python的调试器,可以让程序单步执行,可以随时查看程序的执行状况。
    • 命令:
    命令 说明
    l 查看代码
    n 单步执行
    c 执行到下一个断点
    p 变量名 查看指定变量
    q 退出调试
    • 示例:
    import pdb
    
    a = 1
    
    # 设置断点
    pdb.set_trace()
    
    b = 2
    
    c = 3
    
    pdb.set_trace()
    
    d = 4
    • 总结:
      • 到处设置断点非常麻烦
      • 可以使用IDE(pycharm)来简化操作

测试

  • 单元测试:模块、函数、类等
    from my_math import add, sub
    import unittest
    
    class Test(unittest.TestCase):
        def setUp(self):
            print('开始测试时会自动调用')
    
        def tearDown(self):
            print('测试结束会自动调用')
            
        # 测试函数
        def test_add(self):
            self.assertEqual(add(3, 5), 8, 'add方法有误')  
            
    if __name__ == '__main__':
        # 开始单元测试
        unittest.main()    
  • 文档测试:测试注释文档
    import doctest
    
    def add(x, y):
        '''
        求两个数的和
        :param x: int
        :param y: int
        :return: sum
    
        example:
        >>> print(add(3, 5))
        9
        '''
        return x + y    
    
    if __name__ == '__main__':
        doctest.testmod()     

PEP

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~