我认为更好的方法是将该属性模拟为
PropertyMock,而不是
__get__直接模拟该方法。
它在文档中进行了说明,搜索
unittest.mock.PropertyMock:旨在用作类的属性或其他描述符的模拟。
PropertyMock提供
__get__和
__set__方法,因此您可以在获取返回值时指定它。
方法如下:
class MyClass: @property def last_transaction(self): # an expensive and complicated DB query here passdef 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()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)