gpt4 book ai didi

python - 使用 Mock Python 返回可迭代对象

转载 作者:IT老高 更新时间:2023-10-28 21:12:05 26 4
gpt4 key购买 nike

我正在尝试使用 Mock 来模拟 python 中的函数。这是我的代码:

    resp, content = request(...)

request() 函数需要返回两个值。这是我尝试过的:

    with patch("syncdatetime.py") as sync_mock:
sync_mock.request.return_value = [obj, '']

但是当我运行测试时,我收到错误“Mock object is not iterable”。 request 函数返回一个 Mock 类型的对象而不是一个列表。如何修补请求函数以使其返回列表?

最佳答案

我怀疑您的问题是您没有使用您认为的模拟实例。默认情况下,Mock 的实例在调用时会返回一个 Mock。

>>> m = mock.Mock()
>>> type(m())
<class 'mock.mock.Mock'>

看起来您对 request 的调用正在返回一个 Mock,因为 return_value 尚未初始化,这意味着 resp, content = request() 正在尝试解压缩 Mock 对象。

>>> m = mock.Mock()
>>> (a, b) = m()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Mock' object is not iterable

您不需要使用 side_effect 来返回列表。分配 return_value 应该可以工作。

>>> m = mock.Mock()
>>> m.return_value = ['a', 'b']
>>> (a, b) = m()
>>> a
'a'
>>> b
'b'

关于python - 使用 Mock Python 返回可迭代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6363319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com