Я пытаюсь смоделировать «приватный» метод из класса 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'
Заранее спасибо.