#python #methods #mocking
#python #методы #издевательство
Вопрос:
Я хочу имитировать переменную внутри метода
class a(object):
def __init__(self,ip,port,username,password):
self.__ip=ip
self.__port=port
self.__username=username
self.__password=password
self.__connected=False
def connect():
if self.__connected:
return RET_SUCCESS
Я хочу получить инструкцию return, купив издевательскую переменную внутри connect()
метода.
В этом случае, если я сделаю self__connected = True
, то только он достигнет оператора return. Как издеваться над переменными внутри метода?
Ответ №1:
Вы могли бы установить переменную экземпляра напрямую. Поскольку вы используете двойные подчеркивания, свойство будет доступно как:
instance._a__connected = False
Вы также можете имитировать метод, чтобы возвращать это значение напрямую:
with patch.object(a, 'connect', return_value=RET_SUCCESS) as mock_method:
instance = a()
instance.connect()