用python unittest编写单元测试摘要
python 单元测试 使用摘要
主要步骤:
1。编写完备的单元测试用例
2。根据测试用例测试点编写程序
3。每编写完一个功能,执行测试用例,然后修改代码,直到该点涉及用例全部通过
4。所有用例通过测试,停止编码
5。发现新bug和开发新版本时,及时更新测试用例
编写用例
使用方法
python自带unittest模块,编写的测试用例类继承unittest.TestCase类,所有测试函数以test开头,执行时,执行unittest.main(),所有测试类中以test开头的函数自动执行
简单例子如下:
import unittest
#import testproject
class mytestproject1(unittest.TestCase):
def testcase1(self):
#do some thing with testproject
self.assertEquals(7/2,3)
def testcase2(self):
#...
self.assertEquals("".join(['a','b',' c']),"abc")
class mytestproject2(unittest.TestCase):
def testException(self):
#...
self.assertRaises(ZeroDivisionError,lambda x:3/x,0)
if __name__ = __main__:
unittest.main()
执行后,会报告每个函数执行情况
测试用例的编写
1。针对性
每个用例,即test函数,必须只解决一个问题,这样定位问题会很简单
2。独立性
每个用例之间没有影响,一个的输出不会影响到另外一个的执行
3。完备性
每个用例所挑选的例子应该有代表性,尽可能增加覆盖度
4。顺序
对于每个功能点来说,可能涉及到不同的方面,这些用例最好用一个类组织起来,并按照一定的逻辑顺序排列,这个对开发是有指导作用的
从测试对象来讲,测试用例应该具备以下条件:
1。功能性用例
做什么的问题
2。反面用例
不能做什么的问题,对处理对象的限定
3。适应性,健壮性用例
其他的输入,达到安全性,可知性
unittest的接口:
主要用到unittest.TestCase中的接口,基本的是equal系列和raises系列。具体格式参见 help(unittest)