單元測試能夠幫助咱們準確迅速地定位出現問題的模塊和單元。css
單元測試的對象是函數,必須有輸出結果(哪怕是異常輸出),以便單元測試模塊可以捕獲返回值,而且與預期值進行比較,從而得出測試經過與否函數
單元測試的加載能夠經過unittest.main()來啓動單元測試的測試模塊。單元測試
而testsuit裏存放的就是單元測試的用例,下面分別列出了2種方法的使用。測試
注:引入模塊 import unittest ui
def sum(x, y): return x + y def sub(x, y): return x - y
單元測試模塊spa
class mytest(unittest.TestCase): #全部執行測試的類都繼承TestCase類 #初始化工做 def setUp(self): pass #清退工做 def tearDown(self): pass #具體的測試用例,必定要以test開頭 def testsum_1(self): self.assertEqual(sum(1, 2), 3, "test sum fail") def testsum_2(self): self.assertEqual(sum(1, 2), 2, "test sum fail") def testsub(self): self.assertEqual(sub(2, 1), 1, "test sub fail") if __name__ == "__main__": unittest.main()
測試結果code
..F ====================================================================== FAIL: testsum_2 (__main__.mytest) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:/task/��Ԫ����/test1.py", line 18, in testsum_2 self.assertEqual(sum(1, 2), 2, "test sum fail") AssertionError: test sum fail ---------------------------------------------------------------------- Ran 3 tests in 0.003s FAILED (failures=1)
注:F表示fail, F前的點表示測試經過,有E的話表示程序自身異常對象
class myclass: def __init__(self): pass def sum(self, x, y): return x + y def sub(self, x, y): return x - y
測試代碼blog
class mytest(unittest.TestCase): def setUp(self): self.tclass = myclass() def tearDown(self): pass def testsum_1(self): self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail") def testsum_2(self): self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail") def testsub(self): self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail") if __name__ == "__main__": unittest.main()
結果繼承
..F ====================================================================== FAIL: testsum_2 (__main__.mytest) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:/task/��Ԫ����/test2.py", line 24, in testsum_2 self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail") AssertionError: test sum fail ---------------------------------------------------------------------- Ran 3 tests in 0.001s FAILED (failures=1)
被測代碼
class myclass: def __init__(self): pass def sum(self, x, y): return x + y def sub(self, x, y): return x - y
測試代碼
class mytest(unittest.TestCase): def setUp(self): self.tclass = myclass() def tearDown(self): pass def testsum_1(self): self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail") def testsum_2(self): self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail") def testsub(self): self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail") def suite(): suite = unittest.TestSuite() suite.addTest(mytest("testsum_1")) suite.addTest(mytest("testsum_2")) suite.addTest(mytest("testsub")) return suite if __name__ == "__main__": unittest.main(defaultTest = "suite")