unittest模塊學習(五)

25.3.5 重新使用舊的測試代碼


有些用戶會發現他們有現成的測試代碼,但是希望從unittest運行,而不是將每個舊的測試函數都轉換爲TestCase的子類。

爲了滿足這個需求,unittest提供了一個FunctionTestCase類。這個TestCase的子類可以用來包裝現有的測試函數。還可以提供初始化和拆卸功能。
鑑於以下的測試功能:
def testSomething():
    something = makeSomething()
    assert something.name is not None
    # ...
可以創建一個等效的測試用例實例:
testcase = unittest.FunctionTestCase(testSomething)
如果在測試用例的操作中應該調用另外的初始化和拆卸方法,可以這樣使用:
testcase = unittest.FunctionTestCase(testSomething,
                                     setUp=makeSomethingDB,
                                     tearDown=deleteSomethingDB)
爲了更加容易地遷移現有的測試套件,unittest支持引發AssertionError的測試來指示測試失敗。但是,建議使用明確的TestCase.fail*()和TestCase.assert*()方法,因爲未來版本的unittest可能會以不同的方式處理AssertionError。

注意:儘管可以使用FunctionTestCase快速將現有測試庫轉換爲基於unittest的系統,但是不建議使用此方法。花時間設置適當的TestCase子類將使未來的測試重構變得更容易。

在某些情況下,一些已經完成的測試可能是用doctest模塊編寫。如果是這樣,doctest提供了一個DocTestSuite類,它可以從現有基於doctest的測試中自動構建unittest.TestSuite實例。

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