3
我有一個函數foo(..),它使用'print'打印大量消息。我想編寫單元測試來測試打印消息的正確性。如何獲取打印的消息而不是將其打印在控制檯中。測試函數的打印行爲
例如
def foo(x):
print("Value is ", x)
assertEqual(OUTPUT(foo(5)), "Value is 5")
我有一個函數foo(..),它使用'print'打印大量消息。我想編寫單元測試來測試打印消息的正確性。如何獲取打印的消息而不是將其打印在控制檯中。測試函數的打印行爲
例如
def foo(x):
print("Value is ", x)
assertEqual(OUTPUT(foo(5)), "Value is 5")
你可以嘲笑sys.stdout
如在unittest.mock.patch()
的例子發現:
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()
看起來很完美。讓我測試一下 – ArmanHunanyan
工作。感謝幫助。 – ArmanHunanyan