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的测试。

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

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

建议的解决方案

msautotest/mspython下的测试被修改为与pytest兼容:方法的前缀是 test_ ,临时post_reason()/返回“fail”替换为simple assert 声明

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

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

现在可以跑了 pytest 从msautotest运行所有测试。或者 pytest misc renderers 在这些目录中运行测试。

向后兼容性问题

用户没有。

未更改的内容:

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

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

一些变化:

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

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

安全影响

没有

MapScript含义

没有

票证ID和参考号

拉取请求可从以下网址获得:https://github.com/mapserver/mapserver/Pull/5984

投票历史

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