关于单元测试
单元测试是用来对一个模块、函数、类进行正确性检验的测试工作
例子
对于abs() 绝对值函数而言
1 输入正数 期待返回值与输入值相同
2 输入负数 期待返回值与输入值相反
3 输入0 期待返回0
4 输入其他 期待抛出TypeError
单元测试的意义
如果我们对abs()函数进行了修改 那只用再跑一次单元测试如果通过说明我们的修改不会对abs()函数原有行为造成影响 如果不通过还要继续修改
代码
import unittest from my_dict import Dict class TestDict(unittest.TestCase): def test_init(self): d = Dict(a=1, b='test') self.assertEqual(d.a, 1) self.assertEqual(d.b, 'test') 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): value = d['empty'] def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty
class Dict(dict): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value
运行
$ python mydict_test.py
结果
Ran 5 tests in 0.003s OK