我是一个python新手,我正在尝试模拟process.communicate方法,但我不知道如何从mock返回多个值。我接近它的方式是
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 :(得分: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(Google首播)
答案 1 :(得分:0)
对于错误信息感到抱歉,但我发现错误是在代码的某些不同部分,并且上面提到的语法适用于我们没有任何支撑。