第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

unittest.TestCase setUpClass 重寫和繼承

unittest.TestCase setUpClass 重寫和繼承

蕪湖不蕪 2023-07-11 10:38:52
從下面的示例中可以看出,我BaseClass為所有測試定義了一個,每個測試用例類都繼承基類。這兩個類都需要執(zhí)行一次性初始化,test_vehicles.py執(zhí)行時,我需要確保setUpClass基類的初始化也被調(diào)用,不知道如何實現(xiàn)正在@classmethod發(fā)揮作用的位置。# base.pyimport unittestclass BaseClass(unittest.TestCase):   @classmethod   def setUpClass(cls):       # initialize stuff        cls.app = app# test_vehicles.pyclass VehiclesTestCase(BaseClass):    @classmethod    def setUpClass(cls):        # initialize stuff         cls.vehicle_id = '123'    def test_get_vehicle(self):       resp = self.app.get(self.vehicle_id)       self.assertEqual(resp, True)if __name__ == '__main__':    unittest.main()
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

解決方案:使用super函數(shù)并綁定到類上

# test_vehicles.py

class VehiclesTestCase(BaseClass):


? ? @classmethod

? ? def setUpClass(cls):

? ? ? ? super(VehiclesTestCase, cls).setUpClass()

? ? ? ? cls.vehicle_id = '123'



if __name__ == '__main__':

? ? unittest.main()


查看完整回答
反對 回復 2023-07-11
?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

您可以使用super繼承類中的方法setUpClass來訪問setUpClassof BaseClass:


super().setUpClass()

如果不想super在每個子類中調(diào)用,只需在 in 中創(chuàng)建一個抽象方法并在ofBaseClass中調(diào)用即可?,F(xiàn)在必須實現(xiàn)這個抽象方法:setUpClassBaseClassVehiclesTestCase


class BaseClass(unittest.TestCase):

   @classmethod

   def setUpClass(cls):

       # initialize stuff 

       cls.app = app


   @classmethod

   def _setUpChild(cls):

       raise NotImplementedError



class VehiclesTestCase(BaseClass):


    @classmethod

    def _setUpChild(cls):

        # initialize stuff 

        cls.vehicle_id = '123'


    def test_get_vehicle(self):

       resp = self.app.get(self.vehicle_id)

       self.assertEqual(resp, True)

我還建議,如果它BaseClass不能TestCase自行運行,則不要使用它。盡管它沒有測試,但它總是會出現(xiàn)在您的測試報告中。您可以改為使用多重繼承:


class BaseClass:

   # Stuff


class VehiclesTestCase(BaseClass, unittest.TestCase):

   # Stuff

繼承順序很重要。方法查找是從左到右進行的。這意味著BaseClass.setUpClass會覆蓋setUpClassof TestCase。


查看完整回答
反對 回復 2023-07-11
  • 2 回答
  • 0 關(guān)注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號