假如你听说过“测验驱动开发”(TDD:Test-Driven Development),单元测验就不生疏。
假如单元测验经过,阐明咱们测验的这个函数能够正常作业。假如单元测验不经过,要么函数有bug,要么测验条件输入不正确,总归,需求修正使单元测验能够经过。
单元测验经过后有什么含义呢?假如咱们对abs()函数代码做了修正,只需求再跑一遍单元测验,假如经过,阐明咱们的修正不会对abs()函数原有的行为形成影响,假如测验不经过,阐明咱们的修正与原有行为不共同,要么修正代码,要么修正测验。
这种以测验为驱动的开发形式最大的优点便是确保一个程序模块的行为契合咱们规划的测验用例。在将来修正的时分,能够极大程度地确保该模块行为仍然是正确的。
咱们来编写一个Dict类,这个类的行为和dict共同,可是能够经过特点来拜访,用起来就像下面这样:
以test最初的办法便是测验办法,不以test最初的办法不被认为是测验办法,测验的时分不会被执行。
对每一类测验都需求编写一个test_xxx()办法。由于unittest.TestCase供给了许多内置的条件判别,咱们只需求调用这些办法就能够断语输出是否是咱们所希望的。最常用的断语便是assertEquals():
另一种重要的断语便是等待抛出指定类型的Error,比方经过d[empty]拜访不存在的key时,断语会抛出KeyError:
一旦编写好单元测验,咱们就能够运转单元测验。最简略的运转办法是在mydict_test.py的最终加上两行代码:
这是引荐的做法,由于这样能够一次批量运转许多单元测验,而且,有许多东西能够主动来运转这些单元测验。
能够在单元测验中编写两个特别的setUp()和tearDown()办法。这两个办法会别离在每调用一个测验办法的前后别离被执行。
setUp()和tearDown()办法有什么用呢?想象你的测验需求发动一个数据库,这时,就能够在setUp()办法中衔接数据库,在tearDown()办法中封闭数据库,这样,不用在每个测验办法中重复相同的代码:
能够再次运转测验看看每个测验办法调用前后是否会打印出setUp...和tearDown...。
m6米乐手机登录