unittest框架


一、unittest工作原理

unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture

TestCase:用戶自定義的測試case的基類,調用run()方法,會依次調用setUp方法、執行用例的方法、tearDown方法。

TestSuite:測試用例集合,可以通過addTest()方法手動增加Test Case,也可以通過TestLoader自動添加Test Case,TestLoader在添加用例時,會沒有順序。

TestRunner:運行測試用例的驅動類,可以執行TestCase,也可以執行TestSuite,執行后TestCase和TestSuite會自動管理TESTResult。

TestFixture:簡單來說就是做一些測試過程中需要准備的東西,比如創建臨時的數據庫,文件和目錄等,其中setUp()和setDown()是最常用的方法

整個的流程就是首先要寫好TestCase,然后由TestLoader加載TestCase到TestSuite,然后由TestTestRunner來運行TestSuite,運行的結果保存在TextTestReusult中,整個過程集成在unittest.main模塊中。

1、unittest是python自帶的單元測試框架,可以用來作為我們自動化測試框架的用例組織執行框架

2、unittest流程:寫好TestCase,然后由TestLoader加載TestCase到TestSuite,然后由TextTestRunner來運行TestSuite,運行的結果保存在TextTestResult中,我們通過命令行或者unittest.main()執行時,main會調用TextTestRunner中的run來執行,或者我們可以直接通過TextTestRunner來執行用例。

3、一個class繼承unittest.TestCase即是一個TestCase,其中以 test 開頭的方法在load時被加載為一個真正的TestCase。

4、verbosity參數可以控制執行結果的輸出,0 是簡單報告、1 是一般報告、2 是詳細報告。

5、可以通過addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。

6、用 setUp()、tearDown()、setUpClass()以及 tearDownClass()可以在用例執行前布置環境,以及在用例執行后清理環境

7、我們可以通過skip,skipIf,skipUnless裝飾器跳過某個case,或者用TestCase.skipTest方法。

8、參數中加stream,可以將報告輸出到文件:可以用TextTestRunner輸出txt報告,以及可以用HTMLTestRunner輸出html報告。

import unittest
import HTMLTestRunner

class Test_baidu(unittest.TestCase):
    def setUp(self):
        print('每一個開始了-----------')

    def test_1(self):
        print('test_1')
        self.assertEqual('1','2',msg='1!=2')

    def test_2(self):
        print('test_2')
        self.assertIsInstance([1,2],list)

    def tearDown(self):
        print('每一個結束了----------')

    @classmethod
    def setUpClass(cls):
        print('大項目開是啦+++++++++')

    @classmethod
    def tearDownClass(cls):
        print('大項目結束了+++++++++++')


if __name__ == '__main__':
    suit = unittest.TestSuite()
    suit.addTest(Test_baidu('test_2'))
    suit.addTest(Test_baidu('test_1'))
    runner = unittest.TextTestRunner()
    runner.run(suit)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM