Python单元测试+文档测试
来源:互联网 发布:中国的社交网络有哪些 编辑:程序博客网 时间:2024/06/13 23:14
单元测试:
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
编写一个Dict类,这个类的行为和dict一致,但是可以通过属性来访问
mydict.py代码如下:
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模块,编写mydict_test.py:
import unittest #单元测试from mydict import Dictclass TestDict(unittest.TestCase): #测试类,从unittest.TestCase继承 def setUp(self): #setUp()和tearDown()方法会分别在每调用一个测试方法的前后分别被执行 print('setUp...') def tearDown(self): print('tearDown...') def test_init(self): #测试的方法都以test开头 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_keyerroe(self): d=Dict() with self.assertRaises(KeyError): #期待抛出指定类型的Error,比如通过d['empty']访问不存在的key时,断言会抛出KeyError value=d['empty'] def test_attrerror(self): d=Dict() with self.assertRaises(AttributeError): #通过d.empty访问不存在的key时,我们期待抛出AttributeError value=d.emptyif __name__=='__main__': unittest.main()#D:\Python\学习代码>python mydict_test.py#setUp...#tearDown...#.setUp...#tearDown...#.setUp...#tearDown...#.setUp...#tearDown...#.setUp...#tearDown...#.#----------------------------------------------------------------------#Ran 5 tests in 0.019s#OK
文档测试:
将一部分函数的期望输入和输出写在注释中,Python内置的“文档测试”(doctest)模块可以自动提取注释中的代码并执行测试。doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确。只有测试异常的时候,可以用…表示中间一大段烦人的输出。
class Dict(dict): ''' Simple dict but also support access as x.y style. >>> d1 = Dict() >>> d1['x'] = 100 >>> d1.x 100 >>> d1.y = 200 >>> d1['y'] 200 >>> d2 = Dict(a=1, b=2, c='3') >>> d2.c '3' >>> d2['empty'] Traceback (most recent call last): ... KeyError: 'empty' >>> d2.empty Traceback (most recent call last): ... AttributeError: 'Dict' object has no attribute 'empty' ''' def __init__(self,**kw): super(Dict,self).__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): elf[key]=valueif __name__=='__main__': import doctest doctest.testmod()#运行时若没有任何结果,表示程序没有问题
阶乘函数fact(n)的文档测试:
def fact(n): ''' >>> fact(-1) Traceback (most recent call last): ... ValueError >>> fact(0.5) Traceback (most recent call last): ... ValueError >>> fact(3) 6 >>> fact(1) 1 ''' if not isinstance(n,int): raise ValueError() if n<1: raise ValueError() if n==1: return 1 return n*fact(n-1)if __name__=='__main__': import doctest doctest.testmod()
阅读全文
0 0
- python 单元测试、文档测试
- Python单元测试+文档测试
- 14 python异常处理,调试,单元测试以及文档测试
- python单元测试(自动化测试)
- [Python进阶-6]错误异常处理,断言assert,日志logging,单元测试,文档测试
- Python文档测试
- Python单元测试框架unittest测试过程简介
- python 单元测试与测试用例
- 【Python学习笔记】文档测试
- python 单元测试的模块 pyUnit(unittest),mock与Python测试
- 单元测试测试
- Python的单元测试——单个Module的测试
- Python单元测试unittest加载方式之二:加载测试套件
- python的测试框架(一) -- 单元测试框架
- Python学习:继承一个内置类并用单元测试测试
- 【python单元测试unittest】加载测试套的代码修正
- python单元测试
- Python 单元测试
- jquery开发:jQuery实现当按下回车键时绑定点击事件
- 暑假集训test7
- Jquery
- Spire.Email 教程2:如何在C#,VB.NET 中发送批量电子邮件
- 每隔几秒切换一次文本的TextView的实现
- Python单元测试+文档测试
- IP地址判断
- Linux服务器添加站点域名管理
- [leetcode javascript解题]N-Queens
- Servlet解析
- python requests post 文件,图片
- HDU 1560 IDA*(迭代加深搜索)
- 完美的素数
- npm WARN enoent ENOENT: no such file or directory, open 'E:\Program Files\nodejs \package.json' npm