2016-12-22 43 views
0

我是一个蟒蛇新手,并试图模拟process.communicate方法,但我不知道如何从模拟中返回多个值。我正在接近它的方式是如何在Easymock中模拟多个返回值

with patch.object(subprocess, 'Popen', new_callable=MagicMock) as process: 
    process.communicate.return_value = [b'', b''] 
    output, error = process.communicate() 

错误消息我得到的是:

>  output, error = process.communicate() 
E  ValueError: not enough values to unpack (expected 2, got 0) 

有人可以指出错误我在做什么,我试图与不方和卷曲返回括号。

回答

0

process.communicate返回一个元组,而不是一个列表,所以你需要改变是:

with patch.object(subprocess, 'Popen', new_callable=MagicMock) as process: 
    process.communicate.return_value = (b'', b'') 
    output, error = process.communicate() 

一般在Python当您返回一个元组就可以归还到一个元组指针或解压缩到多个值。对于更多的信息,你可以去here(谷歌上的第一个)

+0

感谢您的回应,能够解决此问题。该错误是在其他地方,并修复后大括号工作正常返回值。 –

0

对不起,我发现错误是在代码的不同部分和上述语法适用于我们没有任何一种括号。