一.错误处理
1. 使用try .. exception .. finally
try:
print 'try...'
r = 10 / 0
print 'result:', r # 出现异常不会打印这句话
except ZeroDivisionError, e: # 如果有异常就会被捕获到
print 'except:', e
else:
print 'no error!' # 如果没有异常就执行else
finally:
print 'finally...' # finally是肯定会执行的
print 'END'
2. 记录错误:使用logging.exception(e)
3. 抛出异常:
raise xxError(xxx)
也可以直接写一个raise,此时会把当前错误原样抛出。
二.调试
1. 使用断言:assert
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n
print foo('0')
2. 使用logging.info(xxx)
日志级别:debug, info, warning, error
import logging
logging.basicConfig(level=logging.INFO)
s = '0'
n = int(s)
logging.info('n = %d' % n) # INFO:root:n = 0
print 10 / n
3. 使用pdb让程序单步调试:
启动:python -m pdb xx.py
查看代码:输入命令l
单步执行:输入命令n
查看变量:输入命令p + 变量名
退出程序:输入命令q
4. 使用pdb.set_trace()
在可能出错的地方放一个pdb.set_trace()相当于设置了一个断点:
使用p + 变量名 查看变量, 使用命令c继续运行
import pdb
s = '0'
n = int(s)
pdb.set_trace() # 运行到这里会自动暂停
print 10 / n
三.单元测试
单元测试:
import unittest
class TestXX(unittest.TestCase):
def setUp(self):
print 'setUp...'
def tearDown(self):
print 'tearDown...'
def test_init(self):
d = 1
self.assertEquals(d, 1)
self.assertTrue(isinstance(d, int))
运行方法: python -m unittest TestXX
setUp和tearDown的作用:
假设测试时需要启动数据库,那么setUp方法中可以写连接数据库的代码,tearDown方法中写关闭数据库连接的代码。
四.文档测试
dd