我试图模拟方法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列表?
答案 0 :(得分:2)
with mock.patch.object(client, 'extra_get', return_value=[{...}, {...}]) as mock_get:
# fill in the rest