unittest.
TestSuite
類表示各個測試用例和測試套件的集合。該類提供測試運行程序所需的接口,以使其能夠像其他任何測試用例一樣運行。運行TestSuite
實例與遍歷套件(分別運行每個測試用例)相同。
unittest.
TestSuite
(tests =())參數tests必須是單個測試用例或其他最初用於構建套件的測試套件的可迭代項。稍后提供了其他方法來將測試用例和套件添加到集合中。
TestSuite
對象的行為與TestCase
對象非常相似,不同之處在於它們實際上並未實現測試。相反,它們用於將測試聚合到應一起運行的測試組中。可以使用一些其他方法將測試用例添加到TestSuite對象
addTest(test)
addTests(iter(test))
將TestCase
或添加TestSuite
到套件。
例:
import unittest
def jiafa(a,b):
if type(a) is str or type(b) is str:
return str(a) + str(b)
return a+b
def jianfa(a,b):
if type(a) is str or type(b) is str:
return 0
return a-b
def chengfa(a,b):
if type(a) is str or type(b) is str:
return 0
return a*b
class TestMath(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_jiafa(self):
'''測試加法程序'''
print("開始測試test_jiafa")
self.assertEqual(jiafa(1,1),2)
def test_jianfa(self):
'''測試減法程序'''
print("開始測試test_jianfa")
self.assertEqual(jianfa(1,1),0)
def test_chengfa(self):
'''測試乘法程序'''
print("開始測試test_chengfa")
self.assertEqual(chengfa(1,1),1)
if __name__ == '__main__':
unittest.main()
from testmath import *
suite = unittest.TestSuite()
suite.addTest(TestMath('test_jiafa'))
print(suite)
輸出一個測試用例的測試套件
<unittest.suite.TestSuite tests=[<testmath.TestMath testMethod=test_jiafa>]>
run(result)
運行與此套件相關的測試,將結果收集到作為result傳遞的測試結果對象中。請注意,不同於 TestCase.run()
,TestSuite.run()
需要傳遞結果對象。
result = unittest.TestResult()
unittest.registerResult(result)
suite = unittest.TestSuite()
suite.addTest(TestMath('test_jiafa'))
suite.addTest(TestMath('test_jianfa'))
testresult = suite.run(result)
print(testresult)
開始測試test_jiafa
開始測試test_jianfa
<unittest.result.TestResult run=2 errors=0 failures=0>
debug
()
運行與此套件相關的測試,而不收集結果。這允許將測試引發的異常傳播到調用方,並可用於支持在調試器下運行測試。模式與unittest.TestCase類詳解的debug相同不重復介紹。
countTestCases
()
返回此測試對象表示的測試數量,包括所有單個測試和套件。
print(TestMath('test_chengfa').countTestCases())
loader = unittest.TestLoader()
suite = loader.loadTestsFromTestCase(TestMath)
print(suite.countTestCases())
suite.addTest(TestMath('test_chengfa'))
print(suite.countTestCases())
分別是1,3,4