Python使用side_效应模拟值,但用于返回多个参数的函数

2024-09-29 23:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

results=[("a", "b"),("c", "d")]
with patch('app.return_alpha.Alpha.return_multiple', side_effect=results) as mymock1:
     v=Alpha()
     first, second = v.return_multiple()
     third, fourth = v.return_multiple()

主要功能:

def return_multiple():
     #some db operation
     return a,b

获取错误

ValueError:没有足够的值来解包(预期2个,得到1个)


Tags: alphaappreturnaswithmultipleresultsside
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:50

这正如预期的那样有效。最简单的例子:

python 3.6.8

>>> from unittest.mock import patch
>>> class A:
...     def return_multiple(self):
...         return 'a', 'b'
... 
>>> with patch('__main__.A.return_multiple', side_effect=[(1, 1), (2, 2), (3, 3)]) as _mymock1:
...     v = A()
...     first, second = v.return_multiple()
...     third, fourth = v.return_multiple()
... 
>>> print(third, fourth)
2 2

相关问题 更多 >

    热门问题