用python3测试学生脚本

2024-10-03 06:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名中学教师,几年来一直使用Python来解决简单的任务。我对编写自动测试来运行在学生身上很感兴趣,代码可以自动完成评分过程。你知道吗

我也对TFD感兴趣,所以单元测试似乎是一种自然的探索途径。我写了一个测试,要求学生修改脚本中的几个函数和过程。然后,我可以针对每个提交手动运行一个测试脚本,通过导入其中的文件来给它们打分。你知道吗

知道关键。。。 我正在努力编写一个脚本,它将遍历子文件夹系统来针对所有提交运行我的测试脚本。你可以想象,这将是一个显着的帮助,减少标记时间。你知道吗

文件夹结构是通过他们以电子方式提交工作的方式生成的。最后我得到了一个作业文件夹,然后是一个子文件夹,里面有学生的作业。 e、 例如“作业1文件夹”,然后在该文件夹内为每个提交的学生提供一个文件夹,例如“安东尼学生文件夹”、“另一个学生文件夹”等(大约23名学生)。你知道吗

每个学生将编辑一个脚本,要求他们编写一个函数或一个过程。举个例子:

# =======================================================================
# Test 1  
# Write a function called 'MyCubed' that takes an integer number as an
# argument and returns the cube of that number.  E.g. calling it with 2
# should give 8.
# =======================================================================
# Code HERE the following code is a student response.  
def MyCubed(num):  
    return num**3

所以我创建了一个测试文件,我可以把它放在每个students文件夹中,然后运行来测试每个文件。你知道吗

# =======================================================================
# Test 1  
# Cube an integer  
test1 = 0  
ModuleExist = True  
try:  
    test1 = Python_Test.MyCubed(3) 
except:  
    print('\nTest 1: Failed: MyCubed not present')  
    ModuleExist = False  
if ModuleExist:  
    if test1 == 27:  
        print('\nTest 1: My Cubed Passed')
        score += 10
    elif test1 != 0:
        print('\nTest 1: Failed expected 27, actually-', test1)

这个脚本包含8个测试(模块)来测试/运行脚本。 所以我希望遍历学生文件夹列表,导入学生解决方案并用测试用例运行。你知道吗

我可以把文件放在每个文件夹中,并分别运行它们,但我想自动遍历所有子文件夹。你知道吗


Tags: 文件函数test脚本文件夹an过程作业
1条回答
网友
1楼 · 发布于 2024-10-03 06:31:35

下面是这段代码将要做的,它将把一个文件夹中的所有文件列表保存在一个列表中,对于该文件夹中的每个文件,您可以用它们的文件名作为参数来运行脚本。如果这看起来像是问题的解决方案,那么可以使用以下代码。你知道吗

import os
from subprocess import Popen
content_list = []
for content in os.listdir(<Path>): # Path to the directory where student Scripts were there
    content_list.append(content)
for item in content_list:
    pobj = Popen([executable, '<Your_script>'+item], bufsize=-1, stdout=sout, stderr=serr)
    pobj.wait()

相关问题 更多 >