允许在vpl moodle插件(http://vpl.dis.ulpgc.es/)的上下文中运行python测试(unittest、nose、pytest)

vpltest的Python项目详细描述


背景

vpl(http://vpl.dis.ulpgc.es/)允许使用自定义执行文件自定义计算过程。这可以用来测试学生提交的专业测试框架。vpltest通过将输出从nosepytest转换为vpl所需的格式,使python分配更容易。

注意

您可能需要将vpltestedutest一起使用。

基本用法

  1. 编写普通的unittestnosepytest测试,而不必担心vpl。
  2. 测试你的测试,不用担心vpl。
  3. 创建vpl活动并在advanced settings=>;execution files下上载测试文件。
  4. 同时上传vpltest.py
  5. 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运行它。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从thymeleaf表单保存地址对象和用户对象的列表?   序列化java。时间使用Jackson将localdate转换为json   java删除LinearLayout和子级之间的空间   具有内存大小限制的Java队列   java尝试在freemarker中创建min(a,b)函数失败   askQuestion()方法中的Java逻辑问题   在Java客户端中接受服务器的自签名ssl证书   java如何正确更新字符串数组?   java如何使多个方法调用充当一个事务性工作单元   swing如何创建可滚动的Java框?   java如何使用SearchView在多个单词之间搜索?   初始化启动层java时出错。lang.module。FindException:模块javafx。找不到图形   java struts对隐藏字段的转义形式验证   用于构建FEM 3D解算器的java JOGL与JAVA3D   java mvn安装忽略hibernate映射文件   在C++和java之间使用JNI通信时,我在哪里保存“这个”?   java无法使用计时器重新绘制窗口   java我遇到一个找不到符号的错误,我无法解决   IntelliJIdea生成实体时java面临的问题   java在动态文本的末尾添加三个点