使unittest.mock.Mock()返回dicts列表

时间:2016-09-15 09:43:03

标签: python unit-testing python-unittest

我试图模拟方法extra_get()的调用,它通常返回一个dicts列表。据我所知,从模拟docs,如果我想返回iterable,我应该设置side_effect参数。

client.extra_get = mock.Mock(
            **{'side_effect': [{'foo': 'bar'}]})

但是接下来的代码调用了mocked方法:

extra = client.extra_get(request, type_id)
result = {x.key: x.value for x in extra}
return result

dict comprehention失败,因为extra没有列表,而是dict {'foo': 'bar'}。 我做错了什么?如何让Mock方法返回一个dicts列表?

1 个答案:

答案 0 :(得分:2)

with mock.patch.object(client, 'extra_get', return_value=[{...}, {...}]) as mock_get:
  # fill in the rest