允许在vpl moodle插件(http://vpl.dis.ulpgc.es/)的上下文中运行python测试(unittest、nose、pytest)
vpltest的Python项目详细描述
背景
vpl(http://vpl.dis.ulpgc.es/)允许使用自定义执行文件自定义计算过程。这可以用来测试学生提交的专业测试框架。vpltest通过将输出从nose或pytest转换为vpl所需的格式,使python分配更容易。
注意
您可能需要将vpltest与edutest一起使用。
基本用法
- 编写普通的unittest、nose或pytest测试,而不必担心vpl。
- 测试你的测试,不用担心vpl。
- 创建vpl活动并在advanced settings=>;execution files下上载测试文件。
- 同时上传vpltest.py
- 要vpl_execution.sh写入以下行:
#!/bin/bash
python3 vpltest.py
如果您使用的是python 2,请将python3替换为python。
命令行参数
您可以使用以下命令行参数调整vpltest:
- --nose和--pytest选择用于收集和运行测试的框架。如果两个标志都不存在,vpltest将使用碰巧安装的标志。如果两者都安装了,它更喜欢nose;
- --show-grade使vpltest根据通过的大部分测试提出分数;
- --show-stacktrace在报告中包括stacktrace;
- --allow-deletion(请参阅“自动保持所有执行文件可用”);
- 所有其他参数都传递给测试框架。
例如。如果希望vpltest计算成绩,请使用pytest运行测试并使pytest同时运行doctests,那么vpl_evaluation.sh应该是
#!/bin/bash
python3 vpltest.py --show-grade --pytest --doctest-modules
测试发现
默认情况下,与*test*.py匹配的所有执行文件(除了vpltest.py)都被视为测试文件并传递到测试框架。通过在vpl_evaluation.sh中指定测试文件,例如:
#!/bin/bash
python3 vpltest.py --show-grade --pytest basic_tests.py style_checks.py
模块内部的测试发现取决于所选的框架。
安装到服务器
如果您经常使用vpltest,那么将它安装到您的测试服务器中是有意义的,这样您就不需要每次都上传它了。它可以与pip一起安装,例如sudo pip3 install pytest。
注意,现在vpl_execution.sh中的python3 vpltest.py不会执行,因为测试目录中不再有vpltest.py。改用python3 -m vpltest。
自动创建vpl_执行
vpl的设计使得vpl_execution.sh不用于运行测试,而是用于执行编译阶段,这包括准备vpl_execution来运行测试。这种设计在编译语言中是有意义的,但在python中,编译阶段只是一个麻烦。vpltest尝试使其使用体验更流畅,方法是在必要时创建vpl_execution。这就是为什么只需要在vpl_execution.sh中写入2行。
自动保持所有执行文件可用
编译阶段结束后,vpl默认删除所有原始执行文件,除非您在advanced settings=>;运行时要保留的文件下勾选它们。
vpltest运行时需要原始测试文件,但不需要记住它,因为它使用了一个使原始文件始终可用的技巧。如果你不喜欢这个,那么用--allow-deletion运行它。