Python学习笔记--7、错误、调试和测试

1、错误处理

  在我目前的水平的情况下,如果我在Pycharm 上执行一个程序,比如说爬取某网站的数据,但是如果如果其中的部分网址是错误的,就会导致程序没有办法正确的返回html, 而这个时候,就会出现程序的错误,而会自动终止当前的程序,而这并不是我想看到的。同时,如果我遇到了一个错误,我是可以对这样的错误进行处理的,比如说,如果我没有得到正确的网址,我是可以通过从新修正这个网址的,而不是直接退出,这样是对错误的处理的一个方法。

那我经常会用的一种形式就是:

这种try:except 的结构,同时,我们不需要在每个可能出错的地方去捕获错误,只要在合适的层次去捕获错误就可以了。这样一来,就大大减少了写try...except...finally的麻烦。

调用栈:

在一般情况下,如果错误没有捕获,那么错误就会一直向上抛,最后被解释器捕获并打印出一个错误的地址,然后退出程序

我们可以一层层进行分析 , 就会得到 起始最终的出现的错误是在return 10/int(s) 中。出错之后,我们只用分析了错误调用栈的错误才能定位错误的位置。

记录错误

实际上,我们可以将错误的记录下来并且将程序自动的执行下去。、

抛出错误
 

2、调试

~调试程序的几种方法:

(1)print:第一种方法,我们可以通过print 函数,将容易出现的错误的变量通过print打印出阿里,

(2)断言:凡是我们用print 打印出来的地方,我们都可以使用assert 比如 assert n!=0  

(3)logging:logging 可以将错误输出到文件文件当中去

虽然看到上面这种可以正确记录错误的类型,但是我还是没有完全理解这个东西是咋用的,

https://www.cnblogs.com/CJOKER/p/8295272.html  推荐这篇博客

(4)pdb 

第四种方式是启用Python的pdb , 让程序以单步的形式进行运行  下面是这种调试的方法的用法

(5)pdb.set_trace()

这个方法也是用pdb,但是不需要单步执行,我们只需要import pdb,然后,在可能出错的地方放一个pdb.set_trace(),就可以设置一个断点:运行代码,程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行:

3、单元测试

比如对函数abs(),我们可以编写出以下几个测试用例:

  1. 输入正数,比如11.20.99,期待返回值与输入相同;

  2. 输入负数,比如-1-1.2-0.99,期待返回值与输入相反;

  3. 输入0,期待返回0

  4. 输入非数值类型,比如None[]{},期待抛出TypeError

  基本上来说,我们通过编写单元测试类来对相关的代码进行测试,看是否是我们所期待试输出的东西。

5、文档测试

猜你喜欢

转载自blog.csdn.net/weixin_42066185/article/details/81902435