unittest 類和模塊夾具

2022-08-04 17:36 更新

類和模塊級別的固定裝置在中實現(xiàn)TestSuite。當(dāng)測試套件遇到來自新類的測試時,則tearDownClass()從前一個類(如果有的話)被調(diào)用,然后setUpClass()從新類中調(diào)用。

類似地,如果測試來自與先前測試不同的模塊,tearDownModule則從之前的模塊開始運行,然后setUpModule從新模塊運行。

在所有測試運行最后tearDownClass并且tearDownModule運行之后。

請注意,共享裝置在測試并行化等潛在功能方面表現(xiàn)不佳,并且會破壞測試隔離。他們應(yīng)該小心使用。

由unittest測試加載器創(chuàng)建的測試的默認(rèn)排序是將來自相同模塊和類的所有測試分組在一起。這將導(dǎo)致setUpClass/ setUpModule(等)每個類和模塊只被調(diào)用一次。如果隨機(jī)化訂單,以便來自不同模塊和類的測試彼此相鄰,則可以在單次測試中多次調(diào)用這些共享夾具功能。

共享燈具不適用于具有非標(biāo)準(zhǔn)訂購的套件。一個BaseTestSuite仍然存在不希望支持共享夾具框架。

如果在共享夾具功能之一中發(fā)生任何異常,則測試報告為錯誤。因為沒有相應(yīng)的測試實例,所以創(chuàng)建一個_ErrorHolder對象(與a具有相同的接口TestCase)來表示錯誤。如果你只是使用標(biāo)準(zhǔn)的unittest測試運行器,那么這個細(xì)節(jié)并不重要,但如果你是一個框架作者,它可能是相關(guān)的。

 setUpClass和tearDownClass

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

import unittest

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

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

如果您希望setUpClass和tearDownClass呼吁然后在基類必須調(diào)用由他們自己。這些實現(xiàn)TestCase是空的。

如果在此期間發(fā)生異常setUpClass,則類中的測試未運行tearDownClass且未運行。被跳過的班級不會有setUpClass或tearDownClass運行。如果異常是一個SkipTest異常,那么該類將被報告為被跳過而不是作為錯誤。

setUpModule和tearDownModule

這些應(yīng)該作為函數(shù)來實現(xiàn):

def setUpModule():
    createConnection()

def tearDownModule():
    closeConnection()

如果在某個時候發(fā)生異常setUpModule,則模塊中的所有測試都不會運行,并且tearDownModule不會運行。如果異常是一個SkipTest異常,那么該模塊將被報告為被跳過而不是錯誤。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號