python文档测试_【Python入门】19.调试器pdb、单元测试unittest和文档测试doctest

笔记更新于2019年12月4日,

摘要:各种调试方法介绍assert、logging、调试器pdb;单元测试unittest的编写方法、如何运行单元测试;文档测试doctest的编写

写在前面:为了更好的学习python,博主记录下自己的学习路程。本学习笔记基于廖雪峰的Python教程,如有侵权,请告知删除。欢迎与博主一起学习Pythonヽ( ̄▽ ̄)ノ

目录

调试与测试

调试

• print

• 断言 assert

• logging

• 调试器 pdb

• pdb.set_trace( )

• IDE

单元测试 unittest

• 单元测试编写

• 单元测试方法

• 运行单元测试

• setUp( )和tearDown( )

文档测试 doctest

调试与测试

调试

程序编写的过程中会出现各种意想不到的bug,想要一次性写好并成功运行几乎不可能。我们需要知道在运行过程中哪些变量可能会出错,在编写过程中要有一套调试程序的手段来修复bug。下面介绍在Python中常见的调试手段。

• print

最简单粗暴的方法是print,只要在把可能会出错的变量打印出来即可。

def fn(s):

n = s

print('>>> n = %d' % n)

return 10 / n

def main():

fn(0)

main()

>>> n = 0

Traceback (most recent call last):

...

ZeroDivisionError: division by zero

这样我们就能知道是n = 0导致的错误。这种方法有个很大的问题就是,在程序编写完之后会留下大量的垃圾信息,不好处理。

• 断言 assert

在上面凡是用到print的地方都可以用assert来代替。

assert后面加一个判断语句,该判断为正确时程序正常运行,反之出现错误,打印紧跟的字符串。

def fn(s):

n = s

assert n != 0, '>>> n = 0'

return 10 / n

def main():

fn(0)

main()

运行结果:

Traceback (most recent call last):

...

AssertionError: >>> n = 0

assert 即声明、断言n应该不等于0,但结果n等于0,则断言失败,抛出AssertionError错误,并打印出紧跟的字符串'>>> n = 0'。

相比print,assert可以通过-O参数来关闭,关闭之后所有的assert语句相当于pass。如把上面代码保存为err.py文件,在python解释器中运行:

python -O err.py

运行结果:

Traceback (most recent call last):

...

ZeroDivisionError: division by zero

可见assert被关闭了,解释器打印出了ZeroDivisionError而不是AssertionError。

• logging

logging也是可以把错误输出。

import logging

s = 0

n = s

logging.info('n = %d' % n)

print(10 / n)

运行之后发现出了ZeroDivisionError之外没有其他信息。这是因为logg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值