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

誤った情報で申し訳ありませんが、エラーはコードの別の部分にあり、上記の構文は中括弧なしで正常に機能することがわかりました。

于 2016-12-22T06:38:08.473 に答える
0

process.communicateリストではなくタプルを返すため、変更する必要があるのは次のとおりです。

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

一般に Python では、タプルを返す場合、タプル ポインターに返すか、複数の値にアンパックできます。詳細については、ここにアクセスしてください(First on Google)

于 2016-12-22T06:19:48.810 に答える