9.類和模塊腳手架

類和模塊級腳手架在TestSuite中實現(xiàn)。當測試套件遇到來自新類的測試時,將調(diào)用前一個類(如果有的話)中的tearDownClass(),然后調(diào)用新類中的setUpClass()

同樣地,如果測試來自與前一個測試不同的模塊,則運行前一個模塊的tearDownModule,然后運行新模塊的setUpModule

在運行所有測試之后,運行最終的tearDownClasstearDownModule。

請注意,共享腳手架與[潛在]功能(如測試并行化)不能很好地兼容,并且會破壞測試隔離。應小心使用它們。

unittest測試加載器創(chuàng)建的測試的默認順序是將來自相同模塊和類的所有測試組合在一起。這將導致每個類和模塊只調(diào)用一次setUpClass/setUpModule(諸如此類)。如果隨機化順序,以便來自不同模塊和類的測試彼此相鄰,則可以在單個測試運行中多次調(diào)用這些共享腳手架函數(shù)。

共享腳手架不適用于非標準訂購的套件。對于不希望支持共享腳手架的框架,仍然存在BaseTestSuite。

如果在其中一個共享腳手架功能期間拋出任何異常,則將測試報告為錯誤。由于沒有相應的測試實例,因此會創(chuàng)建_ErrorHolder對象(具有與TestCase相同的接口)來表示錯誤。如果你只是使用標準的unittest測試運行器,那么這個細節(jié)并不重要,但如果你是框架作者,它可能是相關(guān)的。

9.1 setUpClass和tearDownClass

這些必須作為類方法實現(xiàn):

import unittest

class Test(unittest.TestCase):
  @classmethod
  def setUpClass(cls):
    cls._connection = createExpensiveConnectionObject()

  @classmethod
  def tearDownClass(cls):
    cls._connection.destroy()

如果你想在被調(diào)用的基類上使用setUpClasstearDownClass,那么你必須自己調(diào)用它們。TestCase這部分的實現(xiàn)是空的。

如果在setUpClass期間引發(fā)異常,則不會運行類中的測試,并且不會運行tearDownClass。跳過的類不會運行setUpClasstearDownClass。如果異常是SkipTest異常,則該類將被報告成已跳過而不是錯誤。

9.2 setUpModule和tearDownModule

這些應該作為功能實現(xiàn):

def setUpModule():
  createConnection()

def tearDownModule():
  closeConnection()

如果在setUpModule中引發(fā)異常,則模塊中的所有測試都不會運行,并且不會運行tearDownModule。如果異常是SkipTest異常,則模塊將被報告為已跳過而不是錯誤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 本節(jié)深入介紹了unittest的API。 8.1 測試用例Test cases相關(guān) unittest.TestCa...
    MirrorAi閱讀 1,139評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,540評論 19 139
  • 手部砭法清明養(yǎng)生必備 在農(nóng)耕時代,二十四節(jié)氣是中國古代天文學家和勞動人民,在生活和生產(chǎn)實踐中不斷總結(jié)出來的氣候變化...
    悅元堂閱讀 475評論 0 9
  • Version:v3.1.9_rc6 20170731 Fixed: 修復二次檢測到的人臉ROI位置錯誤的問題 修...
    甜瓜牧羊豬Melon閱讀 300評論 0 0

友情鏈接更多精彩內(nèi)容