这篇文章主要介绍unittest的初始化和结束函数
unittest的初始化和结束类似Python类的init和del
先回顾一下Python中Class的初始化和结束
class chushihuatest():
def __init__(self):
print "现在开始初始化"
def zhongjian(self):
print "中间量"
def __del__(self):
print "现在已经结束了"
if __name__ == '__main__':
testChushihua = chushihuatest()
testChushihua.zhongjian()
执行上面的函数,显示的结果为:
现在开始初始化
中间量
现在已经结束了
[Finished in 0.1s]
也就是说,实例化chushihuatest()被调用zhongjian这个函数的时候,会先调用初始化函数init(self),执行了zhongjian函数后,会执行结束函数del(self)所以运行结果会吧三行都打印出来。
unittest的初始化和结束函数类似Class的init和del。其实就是对测试环境的一个初始化,加载一些数据。退出测试用力的时候关闭一些东西,测试的结果如下
testDel (__main__.testNum) ... 初始化
FAIL
结束
testHello (__main__.testNum) ... 初始化
结束
ok
testSum (__main__.testNum) ... 初始化
结束
ok
======================================================================
FAIL: testDel (__main__.testNum)
----------------------------------------------------------------------
Traceback (most recent call last):
File "testcal.py", line 28, in testDel
self.assertEqual(2,delnum(1,1))
AssertionError: 2 != 0
----------------------------------------------------------------------
Ran 3 tests in 0.000s
FAILED (failures=1)
可以看出运行用力的时候先执行了初始化,运行完毕后执行结束函数,销毁一些链接。自动化测试或者单元测试可能会涉及到从配置文件中读取数据,需要在初始化的时候打开文件,测试完毕后需要关闭文件。下面是具体的源码。
# -*- coding: utf-8 -*-
import unittest
def sumnum(a,b):
return a + b
def delnum(a,b):
return a - b
def hello():
return "hello world"
def chengfa(a,b):
return a * b
class testNum(unittest.TestCase):
def setUp(self):
print "初始化"
def tearDown(self):
print "结束"
def testSum(self):
self.assertEqual(2,sumnum(1,1))
def testDel(self):
self.assertEqual(0,delnum(1,1))
def testHello(self):
self.assertEqual("hello world",hello())
if __name__ == '__main__':
suite1 = unittest.TestLoader().loadTestsFromTestCase(testNum)
unittest.TextTestRunner(verbosity=3).run(suite1)