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

Python使用side_效应模拟值,但用于返回多个参数的函数,python,mocking,pytest,Python,Mocking,Pytest,主要功能: 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() 获取错误 值错误:没有足够的值来解包(预期为2个,得到1

主要功能:

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()
获取错误


值错误:没有足够的值来解包(预期为2个,得到1个)这按预期工作。最简单的例子:

python 3.6.8

def return_multiple():
     #some db operation
     return a,b
>>> 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