python单元测试--这个必须有
工作后忽然发现,对于一个开发者,自己的代码一定要做好充分的单元测试才能提交代码。
单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。
单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。
单元测试代码要非常简单,如果测试代码太复杂,那么测试代码本身就可能有bug。
单元测试通过了并不意味着程序就没有bug了,但是不通过程序肯定有bug。
其他的不多说,直接看一个测试:
我们来编写一个Dict类,这个类的行为和dict一致,但是可以通过属性来访问,用起来就像下面这样:
>>> d = Dict(a=1, b=2)
>>> d['a']
1
>>> d.a
1
mydict.py的实现代码和测试代码如下:
class Dict(dict):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):self[key] = valueif __name__ == "__main__":import unittestclass TestDict(unittest.TestCase):"""Unit test case for class Dict"""def setUp(self):print 'setUp...'def tearDown(self):print 'tearDown...'def test_init(self):d = Dict(a=1, b='test')self.assertEquals(d.a, 1)self.assertEquals(d.b, 'test')self.assertTrue(isinstance(d, dict))def test_key(self):d = Dict()d['key'] = 'value'self.assertEquals(d.key, 'value')def test_attr(self):d = Dict()d.key = 'value'self.assertTrue('key' in d)self.assertEquals(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.emptyunittest.main()
有的一些地方,把测试用例代码和被测试的代码分开写,个人觉得不好管理。
编写单元测试时,我们需要编写一个测试类,从unittest.TestCase继承。
以test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。
对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。最常用的断言就是assertEquals()。
另一种重要的断言就是期待抛出指定类型的Error,比如通过d[‘empty’]访问不存在的key时,断言会抛出KeyError。
通过在类最后调用unittest.main()
就可以执行测试用例代码。
可以在单元测试中编写两个特殊的setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。
setUp()和tearDown()方法有什么用呢?设想你的测试需要启动一个数据库,这时,就可以在setUp()方法中连接数据库,在tearDown()方法中关闭数据库,这样,不必在每个测试方法中重复相同的代码。
python单元测试--这个必须有相关推荐
- Python单元测试--使用装饰器实现测试跳过和预期故障
Python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障.(使用Python 2.7.13) 请查考Python手册中: https://docs.python.org/dev ...
- Python单元测试去哪儿了?
如果您正在编写库或应用程序,则单元测试文件会放在哪里? 将测试文件与主应用程序代码分开是很好的选择,但是将它们放在应用程序根目录内的" tests"子目录中是很尴尬的,因为这样会使 ...
- Python单元测试框架Pyunit 的使用
Python单元测试框架Pyunit 使用示例: 1 import unittest 2 3 class Person: 4 def age(self): 5 return 34 6 def name ...
- Python单元测试框架之pytest 3 -- fixtures
From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...
- Python单元测试最佳实践
Are you ready? ↓↓↓ 今天的课程为< Python单元测试>,内容共分为三个部分:单元测试的概念.工具与方法.Coverage 统计单元测试覆盖率的工具和Mock 简化单元 ...
- python单元测试工具_Python的单元测试工具——unittest小结
简介 unittest是Python的内建模块,是Python单元测试的事实标准,也叫PyUnit.使用unittest之前,先了解如下几个概念: test case:测试用例,可以通过创建unite ...
- Python 单元测试详解
作者:yukkizhang,腾讯 CSIG 测试工程师 本文直接从常用的 Python 单元测试框架出发,分别对几种框架进行了简单的介绍和小结,然后介绍了 Mock 的框架,以及测试报告生成方式,并以 ...
- python单元测试mock_Python单元测试的Mock是怎么回事
单元测试 什么是单元测试, 维基百科上是这么定义的: unit testing is a method by which individual units of source code, sets o ...
- python单元测试示范卷_Python单元测试--Unittest
原标题:Python单元测试--Unittest 什么是单元测试 单元测试是用来对最小可测试单元(如一个函数.一个类或者一个模块)进行检查和验证.尤其是在对代码进行修改或重构后,可以快速准确的定位出现 ...
- python单元测试_python单元测试
http://pyunit.sourceforge.net/ 目录 Python 单元测试框架 .................................................... ...
最新文章
- apache使用.htaccess删除.html扩展名_Web前端入门:html元素解析
- 安装apache+gd2(jpeg,png等)+mysql-client+php脚本
- 行业第一份应用报告,伯克利盘点当前企业如何使用区块链
- java mybatis XML文件中大于号小于号转义(转载)
- C#里面的三种定时计时器:Timer
- 使用大数据闪存打造融合数据平台
- SAIF MBA2011年学费与资助政策发布公告
- 连续4年财务造假 造假金额过亿!捧红杨幂的欢瑞世纪被重罚
- 使用use strict指令的目的
- 收费英超与中国球迷相互抛弃
- WNM6002 N通道增强功能MOS场效应晶体管
- 金融借贷中的风险控制
- com.android.dx.cf.iface.ParseException
- 华为HCIE-CloudComputing备考笔记-2021.10
- 台式计算机如何上无线网络,台式机如何无线上网
- Linux内核数据结构之 radix tree
- word文档批量处理表格
- DbUtils框架(这是一个耗时耗力的差事)
- java中的package关键字
- 游泳过后,耳朵进水怎么办,中耳进水