python 單元測試unittest

來源:互聯網
上載者:User

標籤:

單元測試可以協助我們準確迅速地定位出現問題的模組和單元。

單元測試的對象是函數,必須有輸出結果(哪怕是異常輸出),以便單元測試模組能夠捕獲傳回值,並且與預期值進行比較,從而得出測試通過與否

單元測試的載入可以通過unittest.main()來啟動單元測試的測試模組。

而testsuit裡存放的就是單元測試的用例,下面分別列出了2種方法的使用。

  • setUp():             每個測試函數運行前運行
  • tearDown():        每個測試函數運行完後執行
  • setUpClass():      必須使用@classmethod 裝飾器,所有test運行前運行一次
  • tearDownClass(): 必須使用@classmethod裝飾器,所有test運行完後運行一次

 

例1:測試函數

def sum(x, y):    return x + ydef sub(x, y):    return x - y

單元測試模組

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()

測試結果

..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.003sFAILED (failures=1)

:F表示fail, F前的表示測試通過,有E的話表示程式自身異常

 

例2:測試類別

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), 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.001sFAILED (failures=1)

 

例3:構造測試集

被測代碼

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 suiteif __name__ == "__main__":    unittest.main(defaultTest = "suite")

 

python 單元測試unittest

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.