使用unittest進行測試,如果是需要實現上百個測試用例,把它們全部寫在一個test.py文件中,文件會越來越臃腫,后期維護頁麻煩。此時可以將這些用例按照測試功能進行拆分,分散到不同的測試文件中。
Python代碼如下:
testadd.py:
from calculator import Math import unittest class TestAdd(unittest.TestCase): def setUp(self): print("test case start") def tearDown(self): print("test case end") def test_add(self): j = Math(2, 3) self.assertEqual(j.add(), 5) def test_add2(self): j = Math(41, 76) self.assertEqual(j.add(), 117) if __name__ == '__main__': unittest.main()
testsub.py:
from calculator import Math import unittest class TestSub(unittest.TestCase): def setUp(self): print("test case start") def tearDown(self): print("test case end") def test_sub(self): j = Math(2, 3) self.assertEqual(j.sub(), -1) def test_sub2(self): j = Math(81, 76) self.assertEqual(j.sub(), 5) if __name__ == '__main__': unittest.main()
runtest.py:
import unittest test_dir = './' discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py') if __name__ == '__main__': runner = unittest.TextTestRunner() runner.run(discover)
TestLoader
該類根據各種標准加載測試用例,並將它們返回給測試套件。正常情況下,不需要創建這個類的實例。unittest提供了可以共享的defaultTestLoader類,可以使用其子類和方法創建實例,discover()就是其中之一。
discover(start_dir,pattern='test*.py',top_level_dir=None)
找到指定目錄下所有測試模塊,並可遞歸查到子目錄下的測試模塊,只有匹配到文件名才能被加載。如果啟動的不是頂層目錄,那么頂層目錄必須單獨指定。
- start_dir:要測試的模塊名或測試用例目錄
- pattern='test*.py':表示用例文件名的匹配原則。此處匹配文件名以“test”開頭的“.py”類型的文件,幸好“*”表示任意多個字符
- top_level_dir=None:測試模塊的頂層目錄,如果沒有頂層目錄,默認為None