python错误处理/调试/单元测试/文档测试

一.错误处理

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()

  

原文地址:https://www.cnblogs.com/itfenqing/p/10235774.html

时间: 2024-11-07 15:46:43

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

Python 单元测试 & 文档测试

1.1   单元测试 1.1.1   单元测试编写 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 编写一个Dict类,这个类的行为和dict一致,但是通过属性来访问. >>> d = Dict(a=1, b=2) >>> d['a'] 1 >>> d.a 1 class dict编写如下: [[email protected] python]# cat mydict.py #!/usr/bin/python # -*- co

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

错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017598873256736 普通的错误处理机制就是在出错的时候返回一个错误代码,但是这样十分不方便,一是因为错误码是和正常结果一样的方式返回的,判断起来十分不方便,二是错误还需要一级一级的向上报,直到错误处理程

Python学习笔记(二十二)文档测试

摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319170285543a4d04751f8846908770660de849f285000 当我们编写注释时,如果写上这样的注释: def abs(n): ''' Function to get absolute value of number. Example: >>> abs(1) 1 >>

Python 文档测试

Python内置的"文档测试"(doctest)模块可以直接提取注释中的代码并执行测试. doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确.只有测试异常的时候,可以用'''表示中间一大段烦人的输出. class Dict(dict): ''' Simple dict but also support access as x.y style. >>> d1 = Dict() >>> d1['x'] = 100 >&

Python学习笔记__8.4章 文档测试

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 在文档中编写规范的注释代码.则Python内置的"文档测试"(doctest)模块可以直接提取注释中的代码并执行测试. 1.1.以abs()函数为例: #abs.py def abs(n): ''' # 两个为一对,换行输入 Function to get absolute value of number.  # 简单的介绍 Example: >>> abs(1)   # 测试 1 >>>

三十一 文档测试

如果你经常阅读Python的官方文档,可以看到很多文档都有示例代码.比如re模块就带了很多示例代码: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def' 可以把这些示例代码在Python的交互式环境下输入并执行,结果与文档中的示例代码显示的一致. 这些代码与其他说明可以写在注释中,然后,由一些工具来自动生成文档.既然这些代码本身就可以粘贴出来直

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

这些文档花了我半年的时间去整理,由于是第一次进行整理,希望帮助后来者少走弯路,毕竟是第一次整理,哪些地方不到位,希望大家和我练习,我们一起把它做好,下面就直接给出下载地址了,都是免积分的下载奥,因此,想怎么下就怎么下. 首先就是这个,它介绍了Python的基础语法,个人感觉还是蛮精炼的,下面是在CSDN的下载地址:python基础语法下载,如果不能下载,大家可以在浏览器中输入如下地址进行下载:http://download.csdn.net/detail/xinguimeng/7643003 然

pyPdf - 用Python方便的处理PDF文档

pyPdf库 ( http://pybrary.net/pyPdf/ ) ,操作起来相当直接易懂,把代码贴在这儿,做个记录. 1 from pyPdf import PdfFileWriter, PdfFileReader 2  3 pdf = PdfFileReader(file('original.pdf', 'rb')) 4 out = PdfFileWriter() 5  6 for page in pdf.pages: 7   page.mediaBox.upperRight = (5

[笔记]用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧

最近要帮做RA的老姐写个合并excel工作表的脚本……源数据是4000+个excel 工作表,分布在9个xlsm文件里,文件内容是中英文混杂的一些数据,需要从每张表中提取需要的部分,分门别类合并到多个大的表里. 寻觅工具 确定任务之后第一步就是找个趁手的库来干活. Python Excel上列出了xlrd.xlwt.xlutils这几个包,但是 它们都比较老,xlwt甚至不支持07版以后的excel 它们的文档不太友好,都可能需要去读源代码,而老姐的任务比较紧,加上我当时在期末,没有这个时间细读