2 回答
TA贡献1776条经验 获得超12个赞
解决方案:使用super函数并绑定到类上
# 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条经验 获得超3个赞
您可以使用super继承类中的方法setUpClass来访问setUpClassof BaseClass:
super().setUpClass()
如果不想super在每个子类中调用,只需在 in 中创建一个抽象方法并在ofBaseClass中调用即可。现在必须实现这个抽象方法: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自行运行,则不要使用它。尽管它没有测试,但它总是会出现在您的测试报告中。您可以改为使用多重继承:
class BaseClass:
# Stuff
class VehiclesTestCase(BaseClass, unittest.TestCase):
# Stuff
继承顺序很重要。方法查找是从左到右进行的。这意味着BaseClass.setUpClass会覆盖setUpClassof TestCase。
添加回答
举报