首页 > 解决方案 > 在Python中测试抽象类调用父方法

问题描述

我目前正在重构功能,最终得到了这个抽象

我有这门课

class AbstractClassA(SomeOtherAbstractClass):
    @abstractmethod
    def some_abstract_method(self):
        pass

    def my_method(self)):
       service.some_method

class AbstractClassB(AbstractClassA):
    @abstractmethod
    def another_abstract_method(self):
        pass

    def some_abstract_method(self): 
        some_implementation

    def my_method(self):
        super().my_method()
        do_any_other_stuff

我需要测试是否AbstractClassB.my_method调用super().my_method()

我试图通过创建一些ImplementationClass继承自然AbstractClassB后模拟AbstractClassA.my_method并检查它是否被调用但它不起作用来测试它......

class AbstractClassBImplementation(AbstractClassB):
    def some_abstract_method(self):
        calls_service()


class TestAbstractClassB(TestCase):
    @patch('module.submodule.AbstractClassA.my_method')
    def test_class_b_calls_class_a_my_method(self, my_method_mock):
        instance = AbstractClassBImplementation()

        instance.my_method()

        self.assertTrue(my_method_mock.called)

有人知道如何测试这个吗?

标签: pythonunit-testingmockitoabstract-class

解决方案


推荐阅读