python之錯誤 除錯和測試

2021-07-02 06:35:52 字數 2222 閱讀 9888

try:

print 'try...'

r = 10 / 0

print 'result:', r

except zerodivisionerror, e:

print 'except:', e

finally:

print 'finally...'

print 'end'

如果不捕獲錯誤,自然可以讓python的直譯器來列印出錯誤堆疊,但程式也同時結束了

利用python內建的logiing模組可以非常容易地記錄錯誤資訊,同時讓程式繼續執行下去

import logging

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

try:

bar('0')

except standarderror, e:

logging.exception(e)

main()

print 'end'

只有在必要的時候才定義我們自己的錯誤型別。如果可以選擇python已有的內建的錯誤型別(比如valueerror,typeerror),盡量使用python內建的錯誤型別。

class fooerror(standarderror):

pass

def foo(s):

n = int(s)

if n==0:

raise fooerror('invalid value: %s' % s)

return 10 / n

def foo(s):

n = int(s)

assert n != 0, 'n is zero!'

#assert的意思是,表示式n != 0應該是true,否則,後面的**就會出錯。

return 10 / n

def main():

foo('0')

單元測試:用來對乙個模組、乙個函式或者乙個類來進行正確性檢驗的測試工作,可以有效地測試某個程式模組的行為,是未來重構**的信心保證。

單元測試的測試用例要覆蓋常用的輸入組合、邊界條件和異常。

doctest非常有用,不但可以用來測試,還可以直接作為示例**

什麼輸出也沒有。這說明我們編寫的doctest執行都是正確的

當模組正常匯入時,doctest不會被執行。只有在命令列執行時,才執行doctest。所以,不必擔心doctest會在非測試環境下執行。

class dict(dict):

'''****** 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'

'''def __init__(self, **kw):

super(dict, self).__init__(**kw)

def __getattr__(self, key):

try:

return self[key]

except keyerror:

raise attributeerror(r"'dict' object has no attribute '%s'" % key)

def __setattr__(self, key, value):

self[key] = value

if __name__=='__main__':

import doctest

doctest.testmod()

python錯誤 除錯和測試

錯誤 除錯和測試 當我們認為某些 可能會出錯時,就可以用try來執行這段 如果執行出錯,則後續 不會繼續執行,而是直接跳轉至錯誤處理 即except語句塊,執行完except後,如果有finally語句塊,則執行finally語句塊,至此,執行完畢。出錯的時候,一定要分析錯誤的呼叫棧資訊,才能定位錯...

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 zero...

錯誤 除錯和測試

在程式執行過程中,總會遇到各種各樣的錯誤。有的錯誤是程式編寫有問題造成的,比如本來應該輸出整數結果輸出了字串,這種錯誤我們通常稱之為bug,bug是必須修復的。有的錯誤是使用者輸入造成的,比如讓使用者輸入email位址,結果得到乙個空字串,這種錯誤可以通過檢查使用者輸入來做相應的處理。還有一類錯誤是...