0

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

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)

有人可以指出我在做什么错吗,我尝试过使用和不使用方括号和花括号返回。

4

2 回答 2

0

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

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

一般来说,在 Python 中,当您返回一个元组时,它可以返回到一个元组指针或解压缩为多个值。有关更多信息,您可以访问此处(首先在 Google 上)

于 2016-12-22T06:19:48.810 回答
0

很抱歉提供了错误信息,但我发现错误出现在代码的某些不同部分,并且上面提到的语法在我们没有任何大括号的情况下可以正常工作。

于 2016-12-22T06:38:08.473 回答