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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

unittest.TestCase setUpClass 重寫和繼承

unittest.TestCase setUpClass 重寫和繼承

蕪湖不蕪 2023-07-11 10:38:52
從下面的示例中可以看出,我BaseClass為所有測試定義了一個(gè),每個(gè)測試用例類都繼承基類。這兩個(gè)類都需要執(zhí)行一次性初始化,test_vehicles.py執(zhí)行時(shí),我需要確保setUpClass基類的初始化也被調(diào)用,不知道如何實(shí)現(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 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

解決方案:使用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()


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

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

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


super().setUpClass()

如果不想super在每個(gè)子類中調(diào)用,只需在 in 中創(chuàng)建一個(gè)抽象方法并在ofBaseClass中調(diào)用即可?,F(xiàn)在必須實(shí)現(xiàn)這個(gè)抽象方法: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自行運(yùn)行,則不要使用它。盡管它沒有測試,但它總是會(huì)出現(xiàn)在您的測試報(bào)告中。您可以改為使用多重繼承:


class BaseClass:

   # Stuff


class VehiclesTestCase(BaseClass, unittest.TestCase):

   # Stuff

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


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

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