2016-12-06 51 views
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'

+1

我不確定你想要做什麼。你可以發佈一些你嘗試過monkeypatching的最小代碼,以及你想要應用它的代碼的簡化版本嗎? (見[mcve]。)另外,你想通過猴子修補來達到什麼目的?也許有更好的方法適合你的情況。 –

+0

您的問題標籤中有[tag:py.test]。你是否試圖爲測試目的存根/模擬/僞造/加倍東西? –

+2

在本地方法範圍內定義的變量不等於該方法的屬性。請向我們展示[MCVE]。 –

回答

4

以此爲變量不存在提前的時間和py.test不能掛接到創作是不可能的據我所知,是一個局部變量。