Python3入門(十)——調試與測試


一、異常處理

  1.try...except...finally...

    這個也就是Java里的try...cath..finally...了,直接看經典代碼:

 

try: print("開始執行try...") s = 1 / 0 print("計算結果是%s" % s) except ZeroDivisionError as e: print("異常為:", e) finally: print("執行finally...") print("END...")

 

    處理結果和意料是一樣的:

開始執行try...
異常為: division by zero
執行finally...
END...

    同樣,可以並列捕捉多個異常:(此外在except后還可以接else:來處理沒有異常)

except ValueError as e: print('ValueError:', e) except ZeroDivisionError as e: print('ZeroDivisionError:', e)

    當然,以上的異常都是繼承自BaseException(也就是Java的Exception啦.)

  Python也不像Java一樣,有時候強迫你去在出異常的地方捕獲或拋出,只需要在調用的地方處理即可:

def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2

def main(): try: bar('0') except Exception as e: print('Error:', e) finally: print('finally...')

 

    2.記錄錯誤

      使用python內置的Logging模塊即可

import logging try: print("開始執行try...") s = 1 / 0 print("計算結果是%s" % s) except ZeroDivisionError as e: logging.exception(e) finally: print("執行finally...") print("END...")

    后面logging還可以通過文件進行記錄,和Java的Log4j是一樣的

    3.拋出錯誤

      通過raise關鍵字實現和Java一樣的throw功能了

class MyException(ValueError): pass


def my_ex(): n = input("輸入") if n == 0: raise MyException("輸入錯誤,錯誤的值為%s" % n) return n + 1

二、程序調試

  1.print

    萬能的print,也就是Java的sout了。當然,這也僅僅是第一招了。也是新手常用的招了

  2.斷言

    所有print()的地方都可以用斷言assert來替代,print的小改版:

  n = int(s) assert n != 0, 'n is zero!'
    return 10 / n

  3.logging

    對應log4j的貼心配置

import logging logging.basicConfig(level=logging.INFO) def my_ex(): n = input("輸入") if n == 0: logging.info("INFO日志,變量n為:%s" % n) return n + 1

  更多logging配置,后續進階篇補充

  在Pycharm中斷點調試與IDEA一樣,同家族產品

  4.pdb

    這是python內置的調試器。當然了。這里當然使用熟悉的Pycharm了

三、單元測試

  一個經典的單元測試如下:

import unittest class MyTest(unittest.TestCase): def setUp(self): print("setup...") # 以test開頭的test_xx的就是測試方法
    def test_key(self): d = dict() d['k'] = "value" self.assertEqual(d['k'], "value") def tearDown(self): print("tearDown...")

   首先,單元測試類需要繼承自unittest.TestCase

  其次,以test_開頭的的方法就是測試方法了,其中最常用的就是assertEqual來進行判斷

  再者,setUp,tearDown就相當於Java單元測試的Before和After了

四、文檔測試

  python中內置的doctest,這里暫不贅述

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM