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