В моем коде есть функция, которая запрашивает у пользователя ввод:
def function_1():
...
x = input('Please provide input')
...
return something
Я хочу иметь возможность запустить мой код, и когда программа в конечном итоге достигает function_1
и запрашивает у пользователя ввод, автоматически предоставьте ему некоторый указанный ввод. При тестировании модулей я могу использовать библиотеку макетов для имитации ввода с клавиатуры, как показано ниже:
@mock.patch('builtins.input', side_effects=[1,2,3])
function_1()
function_1()
function_1()
Это вызывает функцию три раза и обеспечивает вводы {1, 2, 3}
. Мне интересно, есть ли способ сделать то же самое за пределами юнит-тестирования.
Я знаю, что могу переписать код или использовать pipe в терминале. Но мне более любопытно, может ли это быть решено способом, описанным выше.