python:python代码调试

    Python编程 wuya 109次浏览 已收录 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


    学海无涯 , 版权所有丨如未注明 , 均为原创丨转载请注明python:python代码调试
    喜欢 (0)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址