Проверка абстрактного класса вызывает родительский метод в Python - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я занимаюсь рефакторингом функций, и в итоге я получил эту абстракцию

У меня есть эти классы

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)

Кто-нибудь знает, как это проверить?

...