मुझे लगता है कि बेहतर तरीका PropertyMock
के रूप में संपत्ति उपहास करने के लिए है, __get__
विधि उपहास करने के लिए के बजाय
तरीके से ऐसा करने के लिए है सीधे।
यह documentation में बताया गया है, unittest.mock.PropertyMock
: एक वर्ग पर एक संपत्ति, या अन्य वर्णनकर्ता के रूप में उपयोग करने का इरादा है। PropertyMock
__get__
और __set__
विधियों प्रदान करता है ताकि आप इसे प्राप्त होने पर वापसी मूल्य निर्दिष्ट कर सकें।
class MyClass:
@property
def last_transaction(self):
# an expensive and complicated DB query here
pass
def test(unittest.TestCase):
with mock.patch('MyClass.last_transaction', new_callable=PropertyMock) as mock_last_transaction:
mock_last_transaction.return_value = Transaction()
myclass = MyClass()
print myclass.last_transaction
mock_last_transaction.assert_called_once_with()
लोगों को अन्य उदाहरण का उपयोग करना चाहिए। 'mock.PropertyMock' ऐसा करने का तरीका है! – vitiral