python学习笔记(八) - 错误、调试、测试

一.错误处理

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值