unittest

1.编写一个自己的类,继承自 dict, 放在文件mydict.py 中

In [6]:
class Dict(dict):
    def __init__(self, **kw):
        super().__init__(kw)
        
    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(b'"Dict object has not attribute {0}"'.format(key) )
    def __setattr__(self, key, value):
        self[key] = value

2.测试代码放在单独的mydict_test.py文件里面

In [ ]:
import unittest
from mydict import Dict 

# 自定义测试类继承自 unittest.TestCase
class TestDict(unittest.TestCase):
    
    # 此方法在每个测试函数执行前调用
    def setUp(self):
        print('begin testing...')
    # 此方法在每个测试函数执行后调用
    def tearDown(self):
        print('test finished!\n')
        
    # 一般将函数执行前需要初始化或者善后工作的代码, 放在上面两个函数中
    
    # 以 test 开头的方法, 都是用于进行单元测试的方法, 会被自动执行
    def test_init(self):
        d = Dict(a = 520,  b = 'love')
        self.assertEqual(d.a, 520)
        self.assertEqual(d.b, 'love')
        self.assertTrue(isinstance(d, dict))
    
    def test_key(self):
        d = Dict()
        d['key'] = 'value'
        self.assertEqual(d.key, 'value')
    
    def test_attr(self):
        d = Dict()
        d.key = 'value'
        self.assertTrue('key' in d)
        self.assertEqual(d['key'], 'value')
    
    def test_keyerror(self):
        d = Dict()
        with self.assertRaises(KeyError): # 表示期望下面的代码抛出一个 KeyError 异常
            value = d['no_such_key']      # 访问一个不存在的键
    
    def test_attrerror(self):
        d = Dict()
        with self.assertRaises(AttributeError): # 表示期望下面代码抛出一个 AttributeError
            d.no_such_attr                      # 访问一个不存在的属性
        

if __name__ == '__main__':
    unittest.main()

3.在命令行执行如下命令, 运行测试代码

In [ ]:
# 在命令行运行
python mydict_test.py
#或者 运行测试代码
python -m unittest mydict_test.py