MS RFC 129:更新msautotest以使用Pytest

日期

2020-01-29

作者

甚至鲁奥

联系

even.rouault@spatialys.com

状态

采用

最后更新

2020-01-29

版本

MapServer 7.6版

概述

本RFC建议使用 Pytest 框架,以替换其msautotest回归测试套件的当前特定Python测试基础结构。

理论基础

MapServer使用了一个特别的Python测试基础设施,类似于GDAL在GDAL 2.3之前的使用(从gdal2.4开始,pytest已经被采用)

虽然它是全功能的,但它是非标准的。使用标准测试框架可以让开发人员更加熟悉msautotest/mspython下的测试,增强功能,减少样板文件,因为可以使用断言,而不是临时的post_reason()/return'fail'当前组合。

Pytest提供了许多其他特性:

  • 更好的输出

  • 能够基于表达式运行测试的子集。例如,“pytest-k wfs”运行所有以wfs的名称包含wfs的测试。

  • 跳过测试、预期失败等的标准解决方案。

  • 使用文档添加自定义选项

建议的解决方案

修改msautest/mspython下的测试以与pytest兼容:方法的前缀为 test_ ,adhoc post_ason()/返回‘FAIL’替换为SIMPLE assert 报表

msautotest/pymod/mstestlib.py是运行基于映射文件的测试的主力,修改为使用pytest基础结构

不会修改mapscript/python/test下的PythonMapScript测试。他们使用的是Python unittest 模块,可以与pytest一起透明地使用。

现在,只需运行即可 pytest 从msautest运行所有测试。或 pytest misc renderers 只在这些目录中运行测试。

向后兼容性问题

用户没有。

未更改的内容:

  • 测试映射文件的语法没有更改

  • wxs/、gdal/等子目录中的当前run-test.py启动程序脚本将被保留,并且是pytest上的包装脚本。

一些变化:

  • 必须安装pytest:msautotest中的“pip install-r requirements.txt”/

  • 选项中的一些更改:strict、valgrind和run_-asan选项现在以双连字符作为前缀

安全影响

没有

MapScript含义

没有

文件需求

https://mapserver.org/development/tests/autotest.html will be updated

票证ID和参考号

拉取请求请访问:https://github.com/MapServer/MapServer/pull/5984

投票历史

由PSC成员SethG,evener,JeffM,SteveL,JukkaR,JeromeB,StephanS,TomK+1采纳