필자는 입력 파일 목록과 예상 출력 파일을 가지고 있습니다. 파이썬 프로그램을 수락하고 입력 파일에서 실행하는 자동 그레이더를 작성하고 싶습니다. 출력을 출력 파일과 비교합니다. 내가 사용한 접근법은 os.system('python program.py > actual.out')
을 사용하여 프로그램을 실행하기 위해 os
파이썬 모듈을 사용한 다음 os.system()을 사용하여 출력과 expected.out 사이에서 diff를 수행하는 것입니다.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로 리디렉션하는 데 어떤 동등한 기능을 사용해야합니까? (program.py 수정은 옵션이 아닙니다.)
시도한 코드는 어디에 있습니까? – pzp