Python学习:继承一个内置类并用单元测试测试

来源:互联网 发布:淘宝产品摄影技巧大全 编辑:程序博客网 时间:2024/05/29 13:41

从dict继承一个类型并且让我们可以用属性去访问并修改.注意,为了能够实现所有的dict功能,初始化参数一定要用*args,**kw。

注意:下面的代码由问题!

class MyDict(dict):    def __init__(self,*args,**kw):        super().__init__(*args,**kw)    def __getattr__(self,key):        try:            return self[key]        except KeyError:            raise KeyError(r'''Dict' object has no object %s'''%key)    def __setattr__(self,key,value):        self[key] = valueD = MyDict(a = 1,b = 2)print(D)print(D.a)D = MyDict({'1':1,1:'1'})print(D)

单元测试:

import syssys.path.append('E:\code')import unittestfrom MyDictionary import MyDictclass TestDict(unittest.TestCase):    def test_init(self):        print('test_init')        d = MyDict(a=1, b='test')        self.assertEqual(d.a, 1)        self.assertEqual(d.b, 'test')        self.assertTrue(isinstance(d, dict))    def test_key(self):        print('test_key')        d = MyDict()        d['key'] = 'value'        self.assertEqual(d.key, 'value')    def test_attr(self):        d = MyDict()        d.key = 'value'        self.assertTrue('key' in d)        self.assertEqual(d['key'], 'value')    def test_keyerror(self):        d = MyDict()        with self.assertRaises(KeyError):            value = d['empty']    def test_attrerror(self):        d = MyDict()        with self.assertRaises(AttributeError):            value = d.emptyif __name__ == '__main__':    unittest.main()

[0]:发现了一个问题,错误类型的测试不对!!!正确的代码是这样:

class MyDict(dict):    def __init__(self,*args,**kw):        super().__init__(*args,**kw)    def __getattr__(self,key):        try:            return self[key]        except KeyError:            raise AttributeError(r'''Dict' object has no object %s'''%key)    def __setattr__(self,key,value):        self[key] = value
0 0
原创粉丝点击