他の回答が示しているように、ファイルを使用するだけでは機能しません。そのため、代わりに何をするかを決める必要があります。FIFO (名前付きパイプ) またはプレーン (匿名) パイプを使用して、テスト中の対話型プログラムにフィードすることができます。または、Unix では、疑似 tty を使用できます。これらすべての利点は、データが読み取られないときにプログラムがブロックされ、次の情報が到着するのを待っていることです。
次に、テスト中のプログラムが読み取るために、定期的にチャネルにデータを書き込むセミインテリジェント (またはインテリジェント) プログラムが必要になります。このプログラムは、メッセージを書き込む間に一時停止する時間を知る必要があります。これは、「1 秒待ってください。データの次の行を書き込みます。あるいは、もっと複雑なことをするかもしれません。
私が知っている 1 つのスキームには 2 つのプログラムがあります。1 つはユーザーの入力内容とそのタイミングを記録するキャプチャ プログラムです (そのため、「データ」ファイルは構造化されており、遅延 (秒と数分の 1 単位) で構成されるレコードがあります)。加えて、送信する文字のセット (カウントとバイトのリスト). これは、ユーザーが入力したものをキャプチャして記録するために実行されます (また、データをプログラムに送信します). 次に、ファイルを読み取る 2 番目の再生プログラムがあります。 、および遅延と文字シーケンスを解釈します。
このスキームは、入力シーケンスが安定している場合に適切に機能します。必要な結果を得るために常に同じシーケンスのキーストロークが必要な場合。プログラムに送信されるデータが、テスト中のプログラムの動作とその応答に適応する必要があり、異なる時間に異なることを行う可能性がある場合は、おそらく ' expect ' を使用する方がよいでしょう。これには、少なくとも非 GUI プログラムの場合は、必要なことを何でも行う能力があります。