Можно ли пропатчить переменную экземпляра класса и заставить ее возвращать другое значение каждый раз, когда на нее ссылаются?в частности, я заинтересован в том, чтобы сделать это с параметром side_effect
- . Я знаю, что при обновлении метода можно присвоить side_effect фиктивный метод.Если вы установите side_effect в качестве списка, он будет перебирать список, возвращая другое значение при каждом вызове.
- Я хотел бы сделать то же самое с переменной экземпляра класса, но не могу заставить ее работать, и я не вижу никакой документации, чтобы предположить, возможно ли это или нет
Пример
from unittest.mock import patch
def run_test():
myClass = MyClass()
for i in range(2):
print(myClass.member_variable)
class MyClass():
def __init__(self):
self.member_variable = None
@patch('test_me.MyClass.member_variable',side_effect=[1,2], create=True)
def test_stuff(my_mock):
run_test()
assert False
Вывод
-------------- Captured stdout call ---------------------------------------------------------------------------------------------------------------------
None
None
Требуемый вывод
-------------- Captured stdout call ---------------------------------------------------------------------------------------------------------------------
1
2
- Для ясности - я знаю, что могу обернуть member_variable в методе get_member_variable () .Это не мой вопрос.Я просто хочу знать, можете ли вы исправить переменную-член с помощью side_effect.