簡體   English   中英

Mock構造函數中的Python PropertyMock

[英]Python PropertyMock in Mock constructor

我正在使用Michael Foord的模擬庫,並對此有疑問。

我想模擬一個屬性,所以我這樣做:

eggs = mock.PropertyMock(return_value='eggs')
spam = mock.Mock()
type(spam).eggs = eggs
assert spam.eggs == 'eggs'

這非常出色。 但是我發現type()部分很難看,並且喜歡這樣做:

eggs = mock.PropertyMock(return_value='eggs')
spam = mock.Mock(eggs = eggs)
assert spam.eggs == 'eggs'

最后一個例子沒有按預期工作, spam.eggs成為一個方法而不是一個屬性。


我知道我可以使用mock.Mock(eggs = 'eggs')所以eggs不是一種方法,但我希望能夠斷言該屬性。 :-)


我使用的是Python 2.7,但我認為unittest.Mock適用。

該補丁可以在一定程度上幫助您,代碼取自官方Mock文檔

>>> class Foo(object):
...     @property
...     def foo(self):
...         return 'something'
...     @foo.setter
...     def foo(self, value):
...         pass
...
>>> with patch('__main__.Foo.foo', new_callable=PropertyMock) as mock_foo:
...     mock_foo.return_value = 'mockity-mock'
...     this_foo = Foo()
...     print this_foo.foo
...     this_foo.foo = 6
...
mockity-mock
>>> mock_foo.mock_calls
[call(), call(6)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM