首页 > 解决方案 > unittest.TestCase setUpClass 覆盖和继承

问题描述

从下面的示例中可以看出,我BaseClass为所有测试定义了一个,每个测试用例类都继承了基类。

这两个类都需要执行一次初始化,当test_vehicles.py执行时,我需要确保setUpClass基类的调用也被调用,不知道如何实现这@classmethod一点。

# base.py
import unittest

class BaseClass(unittest.TestCase):
   @classmethod
   def setUpClass(cls):
       # initialize stuff 
       cls.app = app

# test_vehicles.py
class 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()

标签: pythonpython-unittest

解决方案


类似的问题Using super with a class method。您还可以从https://docs.python.org/3/library/functions.html#super获得更多信息。

解决方案:使用超函数并绑定到类

# test_vehicles.py
class VehiclesTestCase(BaseClass):

    @classmethod
    def setUpClass(cls):
        super(VehiclesTestCase, cls).setUpClass()
        cls.vehicle_id = '123'


if __name__ == '__main__':
    unittest.main()

推荐阅读