Python学習記録の:エラー、デバッグ、テスト
2525 ワード
エラー処理
# coding=utf-8
import logging
try:
print 1 / 0
# print 1 / int('a')
# print 1 / 2
except ZeroDivisionError, e:
logging.exception(e) #
print "exception:", e
except ValueError, e:
print "exception:", e
raise SystemError('input error!') #
except Exception, e:
print type(e)
raise #
else: #
print "no error"
finally:
print "finally"
よくあるエラー・タイプと継承関係は、ここを参照してください.https://docs.python.org/2/library/exceptions.html#exception-hierarchy
デバッグ
assert n != 0, 'n is zero!' # True AssertionError ,
import logging
logging.basicConfig(level=logging.NOTSET)
s = '0'
n = int(s)
logging.info('n = %d' % n)
print 10 / n
ロゴはデバグ、info、warning、error...など複数のレベルがある場合、レベルが低いレベルの情報は出力されず、consoleやファイルなどに出力できます.
python -m pdb err.py
デバッグモードに入り、lはコードを表示し、nは単一ステップで実行し、
p
は変数を表示し、qはデバッグを終了する. import pdb
s = '0'
n = int(s)
pdb.set_trace() #
print 10 / n
コードを実行すると、プログラムは自動的にpdbにあります.set_trace()は一時停止してpdbデバッグ環境に入り、コマンドpで変数を表示したり、コマンドcで実行を続行したりすることができます.
ユニットテスト
assertEquals()
: self.assertEquals(abs(-1), 1) # 1
KeyError
:with self.assertRaises(KeyError):
value = d['empty']
mydict_test.py
の最後に2行のコードを加えることである:if __name__ == '__main__':
unittest.main()
テストをスクリプトとして実行(2)コマンドラインでパラメータ
-m unittest
を介して実行ドキュメントテスト
ドキュメント内のサンプルコードを直接実行します.ドキュメント注記は、一般的に、関数定義文、クラス定義文の次の行で始まり、複数行の文字列の構文を使用します.
def abs(n):
"""
"""
モジュール内のドキュメントテストコード:
if __name__ == "__main__":
import doctest
doctest.testmod()