Если у меня есть unittest.TestCase
, я пытаюсь исправить sys.stdin
на самой функции:
@patch('sys.stdin', new_callable=StringIO)
def test_bla(mocked_stdin):
mocked_stdin.write("TEST")
a = MyClass()
a.do_stuff_with_stdin()
Как ни странно, тогда, если мы попытаемся получить доступ к sys.stdin
из этого класса,только что написанное не для чтения:
import sys
def do_stuff_with_stdin():
r = sys.stdin.read()
# r = ""
Но sys.stdin
был заменен экземпляром StringIO.Так что насмешка сработала, просто содержимое пустое.
Я запускаю эти тесты, используя pytest
.