suite 這個表示測試集,不要放在class內,否則會提示"沒有這樣的測試方法在類里面 ",我覺得它唯一的好處就是調試的時候可以單獨調試某個class而已,我一般不用它,調試時可以注釋不需要的class啊 。不同接口用不同的class也是一種用法,不過那樣用我下面說的import不同py的方法更好,因為所有用例寫在一起的話文件太大了
class PhpTest(unittest.TestCase): def setUp(self): #預置環境 print '--------------PhpTestSetUp--------------\n' def tearDown(self): #清理環境 print '--------------PhpTestClear--------------\n' 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--------------\n' def tearDown(self): #清理環境 print '--------------LuaTestclear--------------\n' 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“收集”它的用例的話,總入口調不了里面的用例的