a.测试驱动开发:(TDD:Test-Driven Development)

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

c.以test开头的方法就是测试方法

d.模块函数:

检查预期结果:assertEqual()

验证条件:assertTrue()或 assertFalse()

验证是否引发了特定异常:assertRaises()

在每个测试方法之前和之后执行的指令:setUp()和tearDown()

为测试脚本提供命令行界面:unittest.main()


mydict.py:

#!/usr/bin/python#-*-coding:utf-8-*-classDict(dict):def__init__(self,**kw):super().__init__(**kw)def__getattr__(self,key):try:returnself[key]exceptKeyError:raiseAttributeError(r"'Dict'objecthasnoattribute'%s'"%key)def__setattr__(self,key,value):self[key]=value



mydict_test.py:

#!/usr/bin/python#-*-coding:utf-8-*-importunittestfrommydictimportDictclassTestDict(unittest.TestCase):defsetUp(self):print('setUp...')deftearDown(self):print('tearDown...')deftest_init(self):d=Dict(a=1,b='test')self.assertEqual(d.a,1)self.assertEqual(d.b,'test')self.assertTrue(isinstance(d,dict))deftest_key(self):d=Dict()d['key']='value'self.assertEqual(d.key,'value')deftest_attr(self):d=Dict()d.key='value'self.assertTrue('key'ind)self.assertEqual(d['key'],'value')deftest_keyerror(self):d=Dict()withself.assertRaises(KeyError):value=d['empty']deftest_attrerror(self):d=Dict()withself.assertRaises(AttributeError):value=d.empty




运行单元测试

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

if__name__=='__main__':unittest.main()

这样就可以把mydict_test.py当做正常的python脚本运行:

$pythonmydict_test.py

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

$python-munittestmydict_test.....----------------------------------------------------------------------Ran5testsin0.000sOK