python学习笔记(十三)调试,单元测试,文档测试(这个有问题 ,没调成功)

调试

程序一次写完不出错的概率很小,有的bug看错误信息就知道,有的变量值是错误的,因此 需要一整套调试程序的手段来修复bug。
第一种方法简单直接粗暴有效,就是print()把可能有问题的变量打印出来:

def foo(s):
    n = int(s)
    print('>>>n = %d' % n)
    return 10 / n
def main():
    foo('0')

main()

用point的最大坏处是还得删掉他,如果程序里都是print(),运行结果也会有很多垃圾信息。

断言

判断一下,然后输出 句话

def foo(s):
    n = int(s)
    assert n != 0, 'n is Zero!'
    return 10/n

def main():
    foo('0')

main()

结果:

Traceback (most recent call last):
  File "G:/zrx/demoproject/demo1.py", line 734, in <module>
    main()
  File "G:/zrx/demoproject/demo1.py", line 732, in main
    foo('0')
  File "G:/zrx/demoproject/demo1.py", line 728, in foo
    assert n != 0, 'n is Zero!'
AssertionError: n is Zero!

虽然也充满 输出语句
不过启动python解释器时可以用参数-O来关闭assert
$ python -O err.py

Traceback (most recent call last):

ZeroDivisionError: division by zero

logging

print()替换为logging是第三种方式,logging不会抛出错误,而且可以 输出到文件:

import logging
logging.basicConfig(level = logging.INFO)
s = '0'
n = int(s)
logging.info('n = %d' % n)
print( 10 / n )

这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等 几个级别,当我们指定level = INFO时,logging.debug就不起作用了。
同理,指定level = WARNING后,debug和info 就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。

pdb

第四种是启动Python的 调试器pdb,让程序以单步方式 运行,可以随时查看运行状态。我们先准备好程序:

import pdb

s = '0'
n = int(s)
#pdb.set_trace()  算是一个断点,执行到这里,但输出下一句代码,需要import pdb
print(10 / n)

在命令行在这里插入图片描述
pdb命令简介:https://www.cnblogs.com/Zzbj/p/10592278.html

IDE
如果要比较爽地设置断点、单步执行,就需要一个支持调试功能的IDE。目前比较好的Python IDE有:
Visual Studio Code:https://code.visualstudio.com/,需要安装Python插件。
PyCharm:http://www.jetbrains.com/pycharm/

单元测试

单元测试就是用来对一个模块、一个函数或者一个类来进行 正确性检验工作。

比如对函数abs(),我们可以编写出以下几个测试用例:
1.输入正数,比如1、1.2、0.99,期待返回值与输入相同;
2.输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;
3.输入0,期待返回0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值