Простое использование файла не сработает, как указали другие ответы. Итак, вам нужно решить, что вы собираетесь делать вместо этого. FIFO (именованный канал) или обычный (анонимный) канал может использоваться для подачи тестируемой интерактивной программы - или, в Unix, вы можете использовать псевдо-tty. Преимущество всего этого заключается в том, что программа блокируется при отсутствии чтения данных, ожидая получения следующей информации, а не сразу решая, что «нет данных для чтения, должна быть EOF».
Затем вам потребуется полуинтеллектуальная (или даже интеллектуальная) программа, периодически записывающая данные в канал для чтения тестируемой программой. Эта программа должна знать, как долго делать паузы между сообщениями, которые она пишет. Это может быть так же просто, как «подождите одну секунду; напишите следующую строку данных ». Или вы можете сделать что-то более сложное.
Одна известная мне схема имеет две программы - программу захвата для записи того, что пользователь вводит, и времени его (таким образом, файл «данных» структурирован; в нем есть записи, состоящие из задержки (в секундах и долях второй) плюс набор символов для отправки (количество и список байтов). Он запускается для захвата того, что пользователь вводит, и записи (а также для отправки данных в программу). Затем существует вторая программа воспроизведения, которая читает файл и интерпретирует задержки и последовательности символов.
Эта схема работает адекватно, если входная последовательность стабильна; если одна и та же последовательность нажатий клавиш всегда необходима для получения требуемого результата. Если данные, отправляемые в программу, должны адаптироваться к тому, что делает тестируемая программа, и к ее ответам, и могут делать разные вещи в разное время, то вам, вероятно, лучше перейти к « ожидайте ». Это дает возможность делать все, что вам нужно - по крайней мере, для программ без графического интерфейса.