我有一组单元测试,它们将反复使用我想模拟的某个合作者类Rental
,每次都传递相同的参数。为了使这更容易,我想创建一个 mock.Mock 的子类并在创建时传递参数。这是代码:
class RentalMock(Mock):
def __call__(self, *args, **kwargs):
super(RentalMock, self).__call__(*args, spec_set=Rental, **kwargs)
self.get_points.return_value=0
return self
问题是,当我实例化此类时,该覆盖没有明显的效果。并且试图在这里覆盖它也不起作用。
> a = RentalMock()
> a.get_points()
<RentalMock name='mock.get_points' id='4447663888'>
> a.get_points.return_value = 0
> a.get_points()
<RentalMock name='mock.get_points' id='4447663888'>
> a.configure_mock(**{"get_points.return_value":0})
> a.get_points()
<RentalMock name='mock.get_points' id='4447663888'>
我彻底糊涂了。我已经尝试了三种方法,都直接取自文档,但似乎都没有。当我将这些参数直接传递给 Mock 实例时,它们工作正常。我错过了什么?