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()

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。
添加回答
舉報