suite 这个表示测试集,不要放在class内,否则会提示"没有这样的测试方法在类里面 ",我觉得它唯一的好处就是调试的时候可以单独调试某个class而已,我一般不用它,调试时可以注释不需要的class啊 。不同接口用不同的class也是一种用法,不过那样用我下面说的import不同py的方法更好,因为所有用例写在一起的话文件太大了
class PhpTest(unittest.TestCase): def setUp(self): #预置环境 print '--------------PhpTestSetUp-------------- ' def tearDown(self): #清理环境 print '--------------PhpTestClear-------------- ' def test_php(self): print 'test_php' def test_phplog(self): print 'test_phplog' def suite(): #suite 这个表示测试集,不要放在class内 suite = unittest.TestSuite() suite.addTest(NginxTest("suite_1")) suite.addTest(NginxTest("suite_2")) suite.addTest(PhpTest("test_php")) suite.addTest(PhpTest("test_phplog")) unittest.TextTestRunner().run(suite) if __name__ == '__main__': # unittest.main(exit = False,verbosity=2)#它是全局方法,把它屏蔽后,不在suite的用例就不会跑,exit = False表示中间有用例失败也继续执行;还有比较常用的verbosity=2,表示显示def名字 suite()#执行suite
如果接口相当多,为了方便维护,建议每个case用独立的py来写,然后用一个“总入口”去import所有py,然后再调用就行了,这是suite就派上用场了
举个例子,luatestcase.py如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import time import datetime import unittest class LuaTest(unittest.TestCase): def runTest(self): print 'anything' def setUp(self): #预置环境 print '--------------LuaTestsetUp-------------- ' def tearDown(self): #清理环境 print '--------------LuaTestclear-------------- ' def test_lua(self): print 'test_lua' def test_lualog(self): print 'test_lualog' def casesuite(): suite = unittest.TestSuite() suite.addTest(LuaTest("test_lua")) suite.addTest(LuaTest("test_lualog")) unittest.TextTestRunner().run(suite)
调用luatestcase.py的“总入口py”就得这样写:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,sys
import time
import datetime
import unittest
import luatestcase
if __name__ == '__main__':
luatestcase.casesuite()
如果luatestcase.py没有用casesuite“收集”它的用例的话,总入口调不了里面的用例的