2012-06-20 36 views
2

假設,你想要寫unittest S代表的功能像這樣的:sys.stdin的樣機?

def test_me(instream): 
    out = "" 
    for line in instream: 
     out += foo(line) 
    return out 

其通常使用這樣的:現在

test_me(sys.stdin) 

,在你unittest是你不希望使用sys.stdin,但模仿sys.stdin的行爲的對象應完全由您控制。這樣,您可以按照原樣測試該功能,並且可以插入任何您喜歡的虛假輸入。你需要創建什麼樣的對象才能做到這一點?

+1

如果您想模擬用戶輸入,請勾選'pexpect' – avasal

回答

1

在這種情況下,參數instream被用作生成器;因此實施發電機將會這樣做。可能只是提供一個函數和一個行列表就可以了。