""" 单元测试 """
__author__on__ =
'shaozhiqi 2019/9/23'
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自带的unittest模块
import unittest
# 也可以将上面的方法单独写到一个文件总用如下语法引入,对其进行测试
# from 目标测试文件名 import 要测试的组件
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
# 两个特殊的setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。
def setUp(self):
print(
'setUp...')
def tearDown(self):
print(
'tearDown...')
# 运行单元测试
if __name__ ==
'__main__':
unittest.main()
# 测试结果
# Ran 5 tests in 0.007s
#
# OK
# 这是推荐的做法,因为这样可以一次批量运行很多单元测试,并且,有很多工具可以自动来运行这些单元测试。
转载于:https://www.cnblogs.com/shaozhiqi/p/11574065.html
相关资源:python unittest基本介绍
转载请注明原文地址: https://mac.8miu.com/read-74134.html