一、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)