Python模組unittest

來源:互聯網
上載者:User

標籤:tps   als   單元   str   default   lan   必須   技術分享   add   

Python內建一個單元測試架構,unittest模組,用它來做單元測試,它裡面封裝好了一些校正返回結果的方法和一些用例執行前的初始化操作

在說unittest之前,先說幾個概念:

TestCase:測試案例

TestSuite:多個測試案例集合在一起

TestLoader:用來載入TestCase到TestSuite

TestRunner:執行測試案例,測試的結果儲存到TestResult執行個體中,包括運行了多少測試案例,成功了多少,失敗了多少等資訊

import unittestclass MyTest(unittest.TestCase):  # 繼承unittest.TestCase    def tearDown(self):        # 每個測試案例執行之後做操作        print(‘111‘)    def setUp(self):        # 每個測試案例執行之前做操作        print(‘22222‘)    @classmethod    def tearDownClass(self):    # 必須使用 @ classmethod裝飾器, 所有test運行完後運行一次         print(‘4444444‘)    @classmethod    def setUpClass(self):    # 必須使用@classmethod 裝飾器,所有test運行前運行一次        print(‘33333‘)    def test_a_run(self):        self.assertEqual(1, 1)  # 測試案例            def test_b_run(self):        self.assertEqual(2, 2)  # 測試案例        if __name__ == ‘__main__‘:    unittest.main()#運行所有的測試案例

 下面是一些常用的斷言,也就是校正結果

        assertEqual(a, b)     a == b              assertNotEqual(a, b)     a != b              assertTrue(x)     bool(x) is True              assertFalse(x)     bool(x) is False              assertIsNone(x)     x is None             assertIsNotNone(x)     x is not None           assertIn(a, b)     a in b            assertNotIn(a, b)     a not in b    

HTMLTestRunner模組,可以產生測試報告,這個模組需要自己安裝,使用執行測試案例就會產生一個HTML的測試報告,裡面會有每個測試案例的執行結果,

import HTMLTestRunner                import unittest        class MyTest(unittest.TestCase):#繼承unittest.TestCase            def tearDown(self):                #每個測試案例執行之後做操作                print(‘111‘)            def setUp(self):                #每個測試案例執行之前做操作                print(22222)            def test_run(self):                # self.assertEqual(1,1)                self.assertIs(1,1)                #測試案例            def test_run2(self):                # self.assertEqual(1,1)                self.assertIs(1,1)                #測試案例            def test_run3(self):                # self.assertEqual(1,1)                self.assertIs(1,1)                #測試案例            def test_run1(self):                # self.assertEqual(1,1)                self.assertIs(1,1)                #測試案例        if __name__ == ‘__main__‘:            test_suite = unittest.TestSuite()#建立一個測試集合            test_suite.addTest(MyTest(‘test_run1‘))#測試套件中添加測試案例            #test_suite.addTest(unittest.makeSuite(MyTest))#使用makeSuite方法添加所有的測試方法            fp = open(‘res.html‘,‘wb‘)#開啟一個儲存結果的html檔案            runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=‘api測試報告‘,description=‘測試情況‘)            #產生執行用例的對象            runner.run(test_suite)            #執行測試套件

  如果我們有多個模組,每個模組下都寫了很多Python檔案,每個Python檔案裡面都有測試案例,那怎麼把這個目錄下的用例都執行呢,就是要先找到這個目錄下的所有Python檔案,然後找到裡面的測試案例,逐個執行

import unittest,HTMLTestRunner        suite = unittest.TestSuite()#建立測試套件        all_cases = unittest.defaultTestLoader.discover(‘.‘,‘test_*.py‘)        #找到某個目錄下所有的以test開頭的Python檔案裡面的測試案例        for case in all_cases:            suite.addTests(case)#把所有的測試案例添加進來        fp = open(‘res.html‘,‘wb‘)        runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=‘all_tests‘,description=‘所有測試情況‘)        runner.run(suite)        #運行測試

  我們在後續進行持續整合的時候,要讓代碼自動運行,就會用到Jenkins了,但是上面產生的測試報告都是HTML格式的,Jenkins不認識,就在Jenkins裡面顯示不出來。那就要產生Jenkins認識的測試報告,Jenkins認識XML格式的報告,那就產生XML格式的報告,這就需要新的模組,xmlrunner,安裝直接pip install xmlrunner

import unittestimport xmlrunner#匯入這個模組class My(unittest.TestCase):     def test1(self,a,b,c):        self.assertEqual(a+b,c) if __name__==‘__main__‘:    test_suite = unittest.TestSuite()    test_suite.addTest(unittest.makeSuite(My))    runner = xmlrunner.XMLTestRunner(output=‘report‘)#指定報告放的目錄    runner.run(test_suite)

  運行之後,就會在report目錄產生XML格式的測試報告了,還自動添加了日期

 

 轉載

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.