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) |