2017-02-24 8 views
3

私は 'print'を使ってたくさんのメッセージを出力する関数foo(..)を持っています。私は、印刷されたメッセージの正確性をテストする単体テストを書いています。印刷されたメッセージをコンソールに出力するのではなく、どうすれば入手できますか? unittest.mock.patch()の例に見られるような例テスト関数print behavior

については

def foo(x): 
    print("Value is ", x) 

assertEqual(OUTPUT(foo(5)), "Value is 5") 

答えて

3

あなたはsys.stdoutを模擬することができます

from io import StringIO 
from unittest.mock import patch 

def foo(): 
    print('Something') 

@patch('sys.stdout', new_callable=StringIO) 
def test(mock_stdout): 
    foo() 
    assert mock_stdout.getvalue() == 'Something\n' 

test() 
+0

は完璧に見えます。私はそれをテストしましょう – ArmanHunanyan

+0

働いています。手伝ってくれてありがとう。 – ArmanHunanyan