Python 自动运行学生测试
我有一些任务的文件夹结构,它们是这样的:Python 自动运行学生测试,python,Python,我有一些任务的文件夹结构,它们是这样的: - student_id1/answers.py - student_id2/answers.py - student_id3/answers.py - student_id4/answers.py - ... 我有一个主文件:run\u tests.py: from student_id1.answers import run_test as test1 from student_id2.answers import run_test as test
- student_id1/answers.py
- student_id2/answers.py
- student_id3/answers.py
- student_id4/answers.py
- ...
我有一个主文件:run\u tests.py
:
from student_id1.answers import run_test as test1
from student_id2.answers import run_test as test2
...
try:
test1()
print("student_id1: OK")
except Exception as ee:
print("Error for student_id1")
try:
test2()
print("student_id2: OK")
except Exception as ee:
print("Error for student_id2")
...
随着每个新学生的加入,可以有更多的文件夹。我想用一个命令调用所有测试,但不想为每个新学生添加太多行
如何实现自动化?您可以使用
importlib
模块:
尝试编写一个程序,为您编写所有这些行。一个简单的for range循环就足够了。然后运行生成的代码。@Filip,这可能行得通,但绝对不是python方式:)比在实际生成器中运行eval略好:)我想这会产生非常简单的代码,因为这是一个相当简单的任务,我想Sarah是个初学者,所以我尽量保持简单。
import os
import importlib
for student_dir in os.listdir():
if os.path.isdir(student_dir):
# here you may add an additional check for not desired folders like 'lib', 'settings', etc
if not os.path.exists(os.path.join(student_dir, 'answers.py')):
print("Error: file answers.py is not found in %s" % (student_dir))
continue
student_module = importlib.import_module("%s.answers" % student_dir)
try:
student_module.run_test()
print("%s: OK" % student_dir)
except Exception as ee:
print("Error for %s" % student_dir)