Python unittest,mock return_value为每次调用返回不同的值

时间:2018-05-30 12:14:26

标签: python-3.x unit-testing

我想测试一个在同一个模型上有两个查询的方法,我希望每个查询返回不同的结果。

def method_to_test():
    qs1 = Order.objects.filter()
    qs2 = Order.objects.filter()

@mock.patch('Order.objects.filter')
def test_method_to_test(self, mock_qs):
     mock_qs.return_value = MagicMock(side_effect=[Order(id=1), Order(id=2)])
     method_to_test()

但查询未返回Order(id=1)Order(id=2)正在返回Mock对象。如何设置side_effect以返回我想要的对象。 我看到它正在设置side_effect内部@mock.patch装饰器,但我想在方法内部进行。

1 个答案:

答案 0 :(得分:0)

mock_qs.side_effect = [Order(id=1), Order(id=2)]