""" 单元测试 """
__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
# 这是推荐的做法,因为这样可以一次批量运行很多单元测试,并且,有很多工具可以自动来运行这些单元测试。

最新文章

  1. Python中的类、对象、继承
  2. 判断iframe加载完成
  3. struts2 spring mybatis 整合(test)
  4. php.ini 中文注释
  5. 黄聪:《跟黄聪学WordPress插件开发》
  6. 【PHP&&FileIO】
  7. not only ... but also
  8. task 限制任务数量(转自msdn)
  9. 30天轻松掌握JavaWeb_使用beanutils
  10. C#.NET使用AnimateWindow制作淡入淡出特殊效果的窗体
  11. sed命令查找<media/msm_cam_sensor.h>替换为"len_msm_cam_sensor.h"
  12. javaweb学习总结(四十)——编写自己的JDBC框架
  13. 秒懂sql intersect
  14. Checkbox in DataList
  15. ie6、ie7真的不支持inline-block吗?
  16. Java并发系列[2]----AbstractQueuedSynchronizer源码分析之独占模式
  17. 基于UDP协议的控制台聊天程序(c++版)
  18. libguestfs手册(1): 架构
  19. linux基础之CentOS7新特性
  20. 使用pt-table-checksum校验MySQL主从复制【转】

热门文章

  1. 什么是yarn,如何使用yarn安装项目依赖
  2. Salesforce LWC学习(十三) 简单知识总结篇一
  3. 网络安全从入门到精通(第二章-3)后端基础SQL— MySQL高级查询与子查询
  4. mvc5+ET6入门第一章
  5. CAS无锁模式
  6. ASP.NET Core 3.x 中间件流程与路由体系
  7. Selenium系列(四) - 鼠标、键盘操作详细解读
  8. github本地提交代码到远程仓库
  9. P5663 加工零件 题解
  10. Leetcode_474. 一和零(二维01背包)