一.错误处理

1.错误处理

try:
...
except Exception1:
...
except Exception2:
...
finally:
...

  

如果在try中发生错误,那么except将捕获到指定错误,然后执行该段语句;而无论有无错误finally都会执行.

2.示例代码:

#-*-coding=utf-8-*-
a = 0
try:
10 / a
except BaseException:
print('a is 0')
finally:
print('done')

  

所有异常的异常都继承自BaseExecption,所以可以指定BaseExecption来捕获所有异常

3.抛出错误

raise为编程者手动抛出错误
格式:
raise 错误类型(错误信息)
注意,raise语句如果不带参数,就会把当前错误原样抛出或抛出No active exception to reraise

#-*-coding=utf-8-*-
a = 0
try:
if a == 0:
raise ValueError('a is 0')
10 / a
except Exception as e:
print(e)
finally:
print('done')

  

二.调试

1.print函数

2.断言:

assert a != 0, 'a is 0'

如果a不等于0,符合预期,否则输出a is 0

可以使用 -O来关闭assert输出:

python -O file.py

  

3.日志记录:

示例:

import logging
logging.basicConfig(filename='log.log', level=logging.INFO) logging.info('发生错误')

  

三.单元测试

1.引入python的unittest模块

2.编写测试类,从unittest.TestCase继承

3.重要的两种方法:

self.assertEqual(abs(-1), 1) # 断言函数返回的结果与1相等

  

#断言是否会引发指定类型的错误
with self.assertRaises(KeyError):
value = d['empty']

  

4.setUp()在每调用一个方法前被执行

5.tearDown()在每调用一个方法后被执行

6.运行单元测试

if __name__ == '__main__':
unittest.main()

  

另一种方法是在命令行通过参数-m unittest直接运行单元测试,这样可以一次运行多个单元测试

7.示例代码:

import unittest

def say_hello():
return 'hello' def division(a):
if a == 0:
raise ValueError('a不能为0')
return 100/a class Test(unittest.TestCase):
def setUp(self):
print('测试开始了')
def test_say_hello(self):
self.assertEqual(say_hello(), 'hello') def test_division(self):
with self.assertRaises(ZeroDivisionError):
division(0)
def tearDown(self):
print('测试结束了') if __name__ == '__main__':
unittest.main()

  

四.文档测试

文档注释中写入交互命令,即可作为文档测试

class OK:
"""
this is test ok Example: >>> ok = OK()
>>> ok.my(1,2)
30
>>> ok.my(2,-1)
Traceback (most recent call last):
...
Param is error: -1
"""
def my(self, a, b):
return a + b if __name__ == '__main__':
import doctest
doctest.testmod()

  

python错误处理/调试/单元测试/文档测试的更多相关文章

  1. python中错误、调试、单元测试、文档测试

    错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 普通的错误处理机制就是在出 ...

  2. python 错误、调试、单元测试、文档测试

    错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 参考链接:https:// ...

  3. python错误、调试、测试

    1.错误, Python内置的try...except...finally用来处理错误十分方便.出错时,会分析错误信息并定位错误发生的代码位置才是最关键的. 程序也可以主动抛出错误,让调用者来处理相应 ...

  4. Python -- 文档测试

    Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试. 例子: # mydict2.py class Dict(dict): ''' Simple dict but ...

  5. ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)

    ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26 ...

  6. Python处理PDF和Word文档常用的方法

    Python处理PDF和Word文档的模块是PyPDF2,使用之前需要先导入. 打开一个PDF文档的操作顺序是:用open()函数打开文件并用一个变量来接收,然后把变量给传递给PdfFileReade ...

  7. 分享一下自己写的Python 3的各种PDF文档【花了半年时间那】

    这些文档花了我半年的时间去整理.因为是第一次进行整理,希望帮助后来者少走弯路.毕竟是第一次整理.哪些地方不到位,希望大家和我练习,我们一起把它做好,以下就直接给出下载地址了,都是免积分的下载奥.因此. ...

  8. linux centos7 安装虚拟Python环境,pyenv安装文档

    python多版本控制pyenv安装文档 1.在线安装: curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-i ...

  9. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

随机推荐

  1. 使用keras时出现 `pydot` failed to call GraphViz的解决办法

    问题来源于使用了 keras.utils.plot_model,报错内容为: 2018-08-29 08:58:21.937037: I tensorflow/core/platform/cpu_fe ...

  2. 洛谷——P1743 矩阵 III

    P1743 矩阵 III 题目背景 usqwedf 改编系列题. 题目描述 给定一个n*m的矩阵,问从左上角走到右下角有多少条路径. 输入输出格式 输入格式: 一行两个正整数 n,m 输出格式: 路径 ...

  3. 【Shell】一些比较有用、常用的shell命令

    最近帮着老大做一些服务器上的日志处理任务,小弟之前只是稍微会用点Linux,但是一些高级的命令基本不会,经过一番折腾,总结了几个自认为比较有用的命令,之后学到更多的再来补充. 一.文本处理:awk 二 ...

  4. Linux基础系列-Day6

    Samba服务(基于CentOS 7.0) Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,Samba主要用于Linux或UNIX和Windows系统之 ...

  5. SSL压力测试工具THC-SSL-DOS

    SSL压力测试工具THC-SSL-DOS   SSL广泛应用安全加密和认证领域,如HTTPS.POP等服务.使用SSL,会加重服务器的负担.例如,在协商阶段,服务器的CPU开销是客户端的15倍.Kal ...

  6. DP套DP

    DP套DP,就是将内层DP的结果作为外层DP的状态进行DP的方法. [BZOJ3864]Hero meet devil 对做LCS的DP数组差分后状压,预处理出转移数组,然后直接转移即可. tr[S] ...

  7. HDU 5289 Assignment rmq

    Assignment 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Description Tom owns a company and h ...

  8. Codeforces Round #342 (Div. 2) E. Frog Fights set 模拟

    E. Frog Fights 题目连接: http://www.codeforces.com/contest/625/problem/E Description stap Bender recentl ...

  9. HDU 4642 Fliping game (2013多校4 1011 简单博弈)

    Fliping game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  10. 最好的拖拽js

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...