python unittest 框架

本來覺得單元測試框架也就那麼回事,不是非常重要,但是看一些其它人寫的代碼後,還是覺得總結學習一下比較好!

整理於其它博主內容,加自己的觀點!

簡介:

unittest單元測試框架不僅可以使用與單元測試,還可以適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。
在這裏插入圖片描述

  • 一個TestCase的實例就是一個測試用例,一個完整的測試流程,包括測試前準備環境的搭劍(setUP),執行測試代碼(run),以及測試後環境的還原(tearDown)。元測試(unit test)的本質也就在這裏,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證
  • 而多個測試用例集合在一起,就是TestSuite,而且TestUite也可以嵌套TestSuite
  • TestLoader是用來加載TestCase到TestSuite,其中有幾個loadTestFrom__( )方法,就是從各個地方尋找TestCase,創建它們的實例,然後add到TestSuite中,在返回一個TestSuite實例
  • TextTestRunner是用來執行測試用例的,其中的run(test)會執行TestCase中的run(result)方法。測試的結果會保存到TextTestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息
  • 而對於一個測試用例環境的搭建和銷燬,是一個fixture

unittest包含以下幾個重要的概念:

  1. test fixture

    代表準備和清理的操作,比如setup testDown都屬於test fixture
    setUp:用於測試用例執行前的初始化工作。比如測i是用例中需要訪問數據庫,可以在setUp中建立數據庫連接進行初始化
    tearDown:用於測試用例執行之後的善後工作。如關閉數據庫連接等
    tearDown即使測試方法拋出異常仍會執行,並且只有setUp( )成功執行時它纔會執行
    assert*( ):一些斷言的方法,在執行測試用例的過程中,最終用例是否執行通過,是通過判斷測試得到的實際結果和預期結果是否相等決定的
    assertEqual(a,b,[msg=‘測試失敗時打印的信息’]):斷言a和b是否相等,相等則測試用例通過。

    assertNotEqual(a,b,[msg=‘測試失敗時打印的信息’]):斷言a和b是否相等,不相等則測試用例通過。

    assertTrue(x,[msg=‘測試失敗時打印的信息’]):斷言x是否True,是True則測試用例通過。

    assertFalse(x,[msg=‘測試失敗時打印的信息’]):斷言x是否False,是False則測試用例通過。

    assertIs(a,b,[msg=‘測試失敗時打印的信息’]):斷言a是否是b,是則測試用例通過。

    assertNotIs(a,b,[msg=‘測試失敗時打印的信息’]):斷言a是否是b,不是則測試用例通過。

    assertIsNone(x,[msg=‘測試失敗時打印的信息’]):斷言x是否None,是None則測試用例通過。

    assertIsNotNone(x,[msg=‘測試失敗時打印的信息’]):斷言x是否None,不是None則測試用例通過。

    assertIn(a,b,[msg=‘測試失敗時打印的信息’]):斷言a是否在b中,在b中則測試用例通過。

    assertNotIn(a,b,[msg=‘測試失敗時打印的信息’]):斷言a是否在b中,不在b中則測試用例通過。

    assertIsInstance(a,b,[msg=‘測試失敗時打印的信息’]):斷言a是是b的一個實例,是則測試用例通過。

    assertNotIsInstance(a,b,[msg=‘測試失敗時打印的信息’]):斷言a是是b的一個實例,不是則測試用例通過。

  2. test case

    代表最基本的測試單元,檢查在特定輸入的情況下是否有一個特定的輸出。通過集成unitest中的TestCase類,可以快速的寫出一個test case

  3. test suite

    test suite由一組test case組成,不過其中也可以包含test suite。代表所有的case集合

  4. test runner

    test runner運行所有的case,並將結果展現給用戶,展現的方式可以是圖形或文本,等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章