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