私はPython3を使って単体テストでクラスプロパティを模擬する方法を尋ねています。プロパティをモックする方法
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
をインストールして実行:私は、ドキュメントを、次の私のために理にかなっている、次のことを試してみたが、それは動作しません:
foo.pyテストのように:
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