关于自动分级
您可以使用自动评分来自动检查学生在 GitHub Classroom 上的工作。 可以为作业配置测试,每次学生推送到 GitHub.com 上的作业库时,测试就会立即运行。 学生可以查看测试结果,进行更改,并推送以查看新结果。
学生接受作业后,每次推送到作业仓库(或按教师定义的计划)时,GitHub Actions 都会在包含学生最新代码的 Linux 环境中运行自动分级测试的命令。 GitHub Classroom 为 GitHub Actions 创建必要的工作流程。 无需使用 GitHub Actions 的经验即可使用自动评分,但可按需选择修改工作流配置。 有关工作流和 GitHub Actions 的详细信息,请参阅 关于使用 GitHub Actions 进行持续集成。
您可以使用测试框架、运行自定义命令、编写输入/输出测试或组合不同的测试方法。 用于自动分级的 Linux 环境包含许多流行的软件工具。 有关详细信息,请参阅 使用 GitHub 托管的运行器 中最新版本的 Ubuntu 的详细信息。
您可以通过导航 GitHub Classroom 中的作业来查看哪些学生通过了自动分级测试的概况。 绿色复选标记表示学生的所有测试都已通过,红色 X 表示学生的部分或所有测试都未通过。 如果您为一个或多个测试评分,则气泡会显示测试的分数以及作业可得最高分数。
评分方法
GitHub Classroom 提供了不同的自动评分测试预设,使用预设可免除配置 GitHub Actions 工作流。 还可选择使用自定义 GitHub Actions YAML 来定义自动评分工作流。
使用 GitHub 预设
无需了解 GitHub Actions 即可使用预设。 可输入有关自动评分测试的信息,GitHub Classroom 会自动将所需文件添加到学生作业存储库中。
预设有三种类型:输入/输出测试、Python 测试和运行命令测试。
输入/输出测试
输入/输出测试可以选择性运行设置命令,然后向测试命令提供标准输入。 GitHub Classroom 根据预期结果评估测试命令的输出。
设置 | 说明 |
---|---|
测试名称 | 测试的名称,用于识别日志中的测试 |
设置命令 | 可选。 在测试之前运行的命令,如编译或安装 |
运行命令 | 运行测试并生成用于评估的标准输出的命令 |
输入 | 运行命令的标准输入 |
预期输出 | 您要视为运行命令的标准输出的输出 |
比较 | 运行命令的输出和预期输出之间的比较类型
|
超时 | 测试在导致失败之前应运行多长时间(分钟) |
点 | 可选。 测试从总分中获得的分数 |
Python 测试
Python 测试运行安装命令,然后运行 pytest
。 获得的分数取决于学生在 pytest
测试套件中通过的测试次数。 每个测试的分数都相同;可通过更改 Points
设置来更改整个测试套件的分值。
设置 | 说明 |
---|---|
测试名称 | 测试的名称,用于识别日志中的测试 |
设置命令 | 可选。 在测试之前运行的命令,如编译或安装。 我们已经安装了一些依赖项,但如有需要,可安装更多。 无需使用 sudo ,并且应使用 pip 而不是 pip3 。 |
运行命令 | 运行测试并生成用于评估的退出代码的命令 |
超时 | 测试在导致失败之前应运行多长时间(分钟) |
点 | 可选。 整个 pytest 套件的总分值。 每个测试的分值均为 Points / number_of_tests |
运行命令测试
运行命令测试运行设置命令,然后运行测试命令。 GitHub Classroom 检查测试命令的退出状态。 退出代码 0
会导致成功,任何其他退出代码都会导致失败。
GitHub Classroom 为各种编程语言提供语言特定的运行命令测试预设。 例如,运行节点测试使用 npm install
预填充 setup 命令,使用 npm test
预填充 test 命令。
设置 | 说明 |
---|---|
测试名称 | 测试的名称,用于识别日志中的测试 |
设置命令 | 可选。 在测试之前运行的命令,如编译或安装 |
运行命令 | 运行测试并生成用于评估的退出代码的命令 |
超时 | 测试在导致失败之前应运行多长时间(分钟) |
点 | 可选。 测试从总分中获得的分数 |
使用自定义 GitHub Actions 工作流
除使用预设,还可将任意工作流添加到起始代码存储库中的 .github/workflows/classroom.yml
文件中。
可直接在分配编辑页面编辑 .github/workflows/classroom.yml
文件,选择自定义 YAML 而不是 GitHub 预设。 单击转换为工作流文件将提示你将更改提交到起始代码存储库。 仅当起始代码存储库与教室位于同一组织中时,此同步才有效。 如果起始代码存储库位于另一个组织中,则必须手动编辑 .github/workflows/classroom.yml
文件。
配置作业的自动评分测试
您可以在创建新作业时添加自动评分测试。 有关详细信息,请参阅“创建个人作业”或“创建组分配”。
您可以添加、编辑或删除现有作业的自动评分测试。 通过课堂 UI 所做的所有更改都将推送到现有的学生资料库,因此在编辑测试时要小心。
-
登录 GitHub Classroom。
-
在课堂列表中,单击要查看的课堂。
-
在要编辑的作业的右侧,单击 。
-
在左侧边栏中,单击“评分和反馈”。
-
添加、编辑或删除自动评分测试。
-
要添加测试,请在“添加自动评分测试”下选择“添加测试”下拉菜单,然后单击要使用的评分方法。 配置测试,然后单击“保存测试用例”。
-
要编辑测试,请点击测试名称右侧的 。 配置测试,然后单击“保存测试用例”。
-
要删除测试,请点击测试名称右侧的 。
-
-
在页面底部,单击“更新作业”。
在运行自动评分测试时进行配置
默认情况下,当学生在 上向分配存储库推送时,都将自动运行自动评分测试。 但是,如果要管理 GitHub Actions 分钟数,则可更改此行为。
- 登录 GitHub Classroom。
- 在课堂列表中,单击要查看的课堂。
- 在要编辑的作业的右侧,单击 。
- 在左侧边栏中,单击“评分和反馈”。
- 自动评分测试列表下方可配置自动评分测试的运行时间。
- 每次学生提交作业时:这是默认行为。
- 按计划:可以设置每天或每周运行自动评分测试的时间。
- 手动:从作业分配仪表板手动触发自动评分测试运行。
查看和下载自动分级测试的结果
下载自动评分结果
可以使用概述页面上的“下载”按钮下载包含学生作业详细信息的 CSV。 这将生成并下载一个包含学生仓库链接、其 GitHub 处理、名册标识、提交时间戳和自动评分的CSV。
查看单个日志
- 登录 GitHub Classroom。
- 在课堂列表中,单击要查看的课堂。
- 在作业列表中,单击要查看的作业。
- 在提交右侧,单击 。
- 查看测试输出。 有关详细信息,请参阅“使用工作流运行日志”。