博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python单元测试unittest、setUp、tearDown()
阅读量:6568 次
发布时间:2019-06-24

本文共 1803 字,大约阅读时间需要 6 分钟。

单元测试反应的是一种以测试为驱动的开发模式,最大的好处就是保证一个程序模块的行为符合我们设计的测试用例,在将来修改的时候,可以极大程度保证该模块行为仍然是正确的。

下面我编写一个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模块,并需要继承unittest.TestCase类,编写mydict_test.py:

import unittestfrom mydict import Dictclass 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_ket(key):        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

凡是以test开头的方法都是测试方法,反之不是,测试时候不会执行。其中,unittest.TestCase提供很多内置的条件判断,我们可以调用这些方法断言输出是否是我们所预计的。一般分为两种,一种是assertEqual():断言某两个结果是否一致。一种是assertRaises():断言是否是期待抛出的指定错误类型。

如何运行单元测试呢?

一种是在mydict_test.py文件最后添加2行代码:

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

这样我们可以直接运行mydict_test.py脚本。

一种是命令行增加参数 -m unittest 直接运行单元测试:

python -m unittest mydict_test

另外,可以通过在单元测试中增加两个特殊函数setUp()和tearDown()函数,已实现在每调用一个测试方法的前后分别执行指定的动作,,其中setUp是在测试函数调用前执行,tearDown是在之后执行:

 

posted on
2018-03-17 21:21 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/hiwuchong/p/8592816.html

你可能感兴趣的文章
淡淡的忧伤
查看>>
学习Windows2008——设计活动目录
查看>>
敏捷开发中Scrum方法
查看>>
PG流复制一些东西
查看>>
服务器安全配置之注册表设置
查看>>
java 定时任务
查看>>
如何让头发长得更快
查看>>
Java类的连接与初始化 (及2013阿里初始化笔试题解析)
查看>>
unity优化笔记
查看>>
haproxy+keepalived应用实战
查看>>
linux
查看>>
Mongodb集群 - 副本集内部选举机制
查看>>
微软宣布 SQL Server 2019 预览版
查看>>
Lync2013 恢复-整残之后如何重新安装
查看>>
SSO 单点登录会话管理
查看>>
jpa查询记录重复
查看>>
mysql-事物实现原理
查看>>
上下滚动播报特效
查看>>
iOS 隐藏导航栏整个视图上移闪屏问题
查看>>
CentOS6.5 安装 ntopng
查看>>