python测试策略的开发与自动分级

python测试策略的开发与自动分级,python,file,python-3.4,file-handling,Python,File,Python 3.4,File Handling,我有一个输入文件列表和一个预期的输出文件,我想写一个自动分级机,它接受python程序,在输入文件上运行它,并将其输出与输出文件进行比较。我使用的方法是使用python的os模块,使用os.system('python program.py>actual.out')运行程序,然后再次使用os.system()执行输出和预期的.out之间的差异 我目前面临的问题是从文件中读取输入,因为给定的程序是从控制台读取的。那么,我应该如何重定向文件中的输入,以便program.py中的sys.stdin能够

我有一个输入文件列表和一个预期的输出文件,我想写一个自动分级机,它接受python程序,在输入文件上运行它,并将其输出与输出文件进行比较。我使用的方法是使用python的
os
模块,使用
os.system('python program.py>actual.out')
运行程序,然后再次使用os.system()执行输出和预期的.out之间的差异

我目前面临的问题是从文件中读取输入,因为给定的程序是从控制台读取的。那么,我应该如何重定向文件中的输入,以便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
。我应该使用什么等效方法将输入文件重定向到progam.py,以便在program.py中使用sys.stdin时,它将从传递的文件中读取?(修改program.py不是一个选项。)

您可以使用Python 3.3+中的内置模块来做任何事情,因为您实际上是在对预期的输出旋转a并执行a。最简单的例子:

check.py

你好,派伊

示例运行

$ python check.py 
- Good Evening!
?      ^^^
+ Good Morning!
?      ^^^

根据需要进行修改,并链接库中的其他方法/函数。如果子流程需要stdin,您可能需要创建Popen对象并调用communicate,但请先阅读文档以备将来参考。

您可以使用Python 3.3+中的内置模块来完成所有操作,因为您实际上是在对预期输出进行旋转和调用。最简单的例子:

check.py

你好,派伊

示例运行

$ python check.py 
- Good Evening!
?      ^^^
+ Good Morning!
?      ^^^

根据需要进行修改,并链接库中的其他方法/函数。如果子流程需要stdin,您可能需要创建Popen对象并调用communicate,但请先阅读文档以备将来参考。

您尝试过的代码在哪里?您尝试过的代码在哪里?
$ python check.py 
- Good Evening!
?      ^^^
+ Good Morning!
?      ^^^