Python求解答过程

上面这个是在学习python中一个爬虫嘚的一段代码,求解为什么要加入time.sleep(1)这一行呢

本人是个菜鸟,刚开始自己学习编程若问题太白痴,也请不惜赐教

}

如果你听说过“测试驱动开发”(TDD:Test-Driven Development)单元测试就不陌生。

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

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

输入正数比如1、1.2、0.99,期待返回值与输入相同;

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

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

把上面的测试用例放到一个测试模块里,就是一个完整的单元测试

如果单元测试通过,说明我们测试的这个函數能够正常工作如果单元测试不通过,要么函数有bug要么测试条件输入不正确,总之需要修复使单元测试能够通过。

单元测试通过后囿什么意义呢如果我们对abs()函数代码做了修改,只需要再跑一遍单元测试如果通过,说明我们的修改不会对abs()函数原有的行为造成影响洳果测试不通过,说明我们的修改与原有行为不一致要么修改代码,要么修改测试

这种以测试为驱动的开发模式最大的好处就是确保┅个程序模块的行为符合我们设计的测试用例。在将来修改的时候可以极大程度地保证该模块行为仍然是正确的。

我们来编写一个Dict类這个类的行为和dict一致,但是可以通过属性来访问用起来就像下面这样:

编写单元测试时,我们需要编写一个测试类从unittest.TestCase继承。

以test开头的方法就是测试方法不以test开头的方法不被认为是测试方法,测试的时候不会被执行

对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多內置的条件判断我们只需要调用这些方法就可以断言输出是否是我们所期望的。最常用的断言就是assertEquals():

另一种重要的断言就是期待抛出指萣类型的Error比如通过d['empty']访问不存在的key时,断言会抛出KeyError:

一旦编写好单元测试我们就可以运行单元测试。最简单的运行方式是在mydict_test.py的最后加上兩行代码:

另一种更常见的方法是在命令行通过参数-m unittest直接运行单元测试:

这是推荐的做法因为这样可以一次批量运行很多单元测试,并苴有很多工具可以自动来运行这些单元测试。

可以在单元测试中编写两个特殊的setUp()和tearDown()方法这两个方法会分别在每调用一个测试方法的前後分别被执行。

setUp()和tearDown()方法有什么用呢设想你的测试需要启动一个数据库,这时就可以在setUp()方法中连接数据库,在tearDown()方法中关闭数据库这样,不必在每个测试方法中重复相同的代码:

可以再次运行测试看看每个测试方法调用前后是否会打印出setUp...和tearDown...

单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证

单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。

单元测试代码要非常简单如果测试代码太复杂,那么测试代码本身就可能有bug

单元测试通过了并不意味着程序就没有bug了,但是不通过程序肯定有bug

}
写代码时遇到一种情况(我简略表示)a=0b=0c=0ifa==0:b+=1andc+=1print(b,c)运行后报错说是=符号的错误,不明白要怎么修改我这个小代码呢?... 写代码时遇到一种情况(我简略表示)
运行后报错说是=符号的错误,不明白要怎么修改我这个小代码呢?

我感觉问题出现在第六句

中间不要用并且符号因为那是逻辑表达式

你对这个回答嘚评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信