私は入力ファイルと予想される出力ファイルのリストを持っています。私は、入力ファイルでそれを実行し、Pythonプログラムを受け入れるという仕事をする自動グレーダーを書いて、その出力を出力ファイルと比較します。私が使用しているアプローチは、os.system('python program.py > actual.out')
を使用してプログラムを実行し、os.system()を使用して出力とexpected.outの間でdiffを実行するために、os
のpythonモジュールを使用する方法です。開発とオートグレーダーのpythonテスト戦略
私が現在直面している問題は、与えられたプログラムがコンソールからの読み込みであるため、ファイルから入力を読み込むことです。ですから、どのように入力をファイルからリダイレクトすれば、program.pyのsys.stdinが読むことができますか?
import os
def grade(program_py_file_handler,input_dir,output_dir):
#create temporary file for program.py using program_py_file_handler
#one by one read all files from input_dir
#run program.py using os.system generating a temp file
#do diff be temp file and expected file
diffコマンドを使用せずにdiffを実行するより良い方法はありますか?
出力をprogram.pyからファイルにリダイレクトするには、python program.py>tem.out
を使用しました。 program.pyでsys.stdinを使用したときに、渡されたファイルから読み込むように、入力ファイルをprogam.pyにリダイレクトするために使用するものは何ですか?
試したコードはどこですか? – pzp