2
В py.test monkeypatching/mocking documentation это не упоминается, но можно monkeypatch локальную переменную, введенную в тело функции?можно monkeypatch локальную переменную, введенную в тело функции?
мой эксперимент:
def my_method():
my_var = 'foo'
return my_var[:2]
тест:
def test_my_method(monkeypatch):
monkeypatch.setattr(my_module.MyClass.my_method.my_var, lambda: 'bar')
assert my_method() == 'ba'
AttributeError: 'function' object at MyClass.my_method has no attribute 'my_var'
Я не уверен, что вы пытаетесь сделать. Можете ли вы опубликовать какой-то минимальный код, с которым вы пытались перенестись monkeypatching, а также откинутую версию кода, к которому вы хотите применить его? (См. [Mcve].) Кроме того, что вы пытаетесь достичь путем патча обезьян? Возможно, есть лучший способ для вашего контекста. –
У вас есть [tag: py.test] в тегах вашего вопроса. Вы пытаетесь заглушить/издеваться/подделывать/дублировать что-то для целей тестирования? –
Переменная, определенная в локальной области действия метода, не эквивалентна атрибуту метода. Пожалуйста, покажите нам [MCVE]. –