2016-12-22 45 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

對不起,我發現錯誤是在代碼的不同部分和上述語法適用於我們沒有任何一種括號。