Как смоделировать закрытый метод из родительского класса в python - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь смоделировать «приватный» метод из класса parrent. Я хотел бы, чтобы закрытый метод вызывал пользовательское исключение (или возвращал True в другом случае). Вот мой код:

class Machine:
    def __init__(self, some_param):
        self.some_param = some_param

    def __private_method(self, input):
        ...

class ChildMachine(Machine):
    def __init__(self):
        super().__init__(param)

    def public_method(self, input):
        return self.__private_method(input)

И вот мои тесты:

from django.test import TransactionTestCase
from mock import patch
import pytest
import custom_lib


@pytest.mark.django_db
class TestClass(TransactionTestCase):

    @patch('custom_lib.Machine._Machine__private_method')
    def test_public_method(self, mock_private):
        mock_private.side_effect = exceptions.CustomException()
        machine = custom_lib.ChildMachine('TEST')
        with self.assertRaises(exceptions.CustomException):
            machine.public_method('TEST')

Однако здесь возникает исключение:

AttributeError: <class 'custom_lib.Machine'> does not have the attribute '_Machine__private_method'

Заранее спасибо.

...