我在問如何使用Python3在單元測試中模擬一個類屬性。我試過以下,這是有道理的,我下面的文檔,但它不工作:如何模擬一個屬性
foo.py:
class Foo():
@property
def bar(self):
return 'foobar'
def test_foo_bar(mocker):
foo = Foo()
mocker.patch.object(foo, 'bar', new_callable=mocker.PropertyMock)
print(foo.bar)
我已經安裝pytest
和pytest_mock
並運行試驗是這樣的:
py.test foo.py
我得到了以下錯誤:
> setattr(self.target, self.attribute, new_attr)
E AttributeError: can't set attribute
/usr/lib/python3.5/unittest/mock.py:1312: AttributeError
我的期望是測試運行時沒有錯誤。
當然 - 我按照你說的方式工作 - 我剛剛貼了一個失敗的後期審判。 – jsbueno
我已經編輯了答案 - 這實際上是爲我工作的。 – jsbueno
這很有效!也感謝關於描述符協議的鏈接。事實上,我不明白到目前爲止,如何在物業內實施物業。將通過這一點。 – hek2mgl