本文主要是阅读完cookbook第14章的测试,调试和异常的,对章节内的各个子目录的一句话总结。这一章讲了测试,测试主要用到了unittest模块;讲了调试主要是set trace;讲了异常,主要是层级捕获异常,自定义异常相关的方案。
1、测试输出到标准输出上,使用unittest.mock.patch替换系统输出,然后使用assertEqual比对和给定的输出是否一样。
2、在单元测试中给对象打补丁,使用unittest.mock.patch替换函数输出,或者模拟输入用来测试代码的可用性。
3、在单元测试中测试异常情况,使用assert*簇的函数进行异常测试,可以讲产生输出结果的数据和期望输出的数据进行比对。
4、讲测试输出用日志记录到文件中,这一节在代码中没有复现。主要原因是if __name__ == '__main__'没有执行。
5、忽略或者期望测试失败,使用unittest.skip可以设置在某些条件下不需要测试。
6、处理多个异常,在try语句可以接多个except,异常存在层级关系,基类包含其子类,使用__mro__属性值查看该异常类的层级结构
7、使用Exception as e 捕获除systemExit, keyboardInterrupt和genertorExit的所有异常
8、创建自定义异常,异常继承至基类Exception类
9、捕获异常后抛出另外的异常,用来链接异常使用raise another exception from e
10、重新抛出被捕获的异常,在except 语句中写上raise
11、输出警告信息,在控制台中使用python -W all输出所有警告, ignore忽略所有警告,error 警告变成异常。使用warning.warn()函数可以设置警告类型
12、调试基本的程序崩溃错误,在控制台中使用python -i 会进行交互,或者使用pdb模块。该模块的使用方法可以参考IBM博客描述https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/index.html。
13、给你的程序做性能测试,在linux中直接使用time python someprogram.py 可以就按用时,也可以使用python -m cProfile someprogram.py进行测试。
14、加速程序运行,主要一下三点,1、使用局部变量,2、尽量去掉属性次,3、即时编译工具(JIT)