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]。 –