测试与持续集成#
本页提供以下内容的摘要:
贡献者测试 - 代码风格和本地测试
维护者测试 - 持续集成
如果你是贡献者或开发者,请确保你已经设置好了开发环境,并安装了 sktime 的 开发版本。
sktime 使用 GitHub 上的持续集成 (CI) 服务来自动检查新的拉取请求是否不会破坏任何内容,并且是否符合代码质量标准,例如统一的 编码风格。
本地测试#
如果你为 sktime 做贡献,下面的内容将为你提供如何在提交拉取请求之前在本地测试代码的指南。
我们推荐:
在你的本地开发IDE中设置代码质量检查
学习如何使用
check_estimator工具来检查估计器和sktime对象高级贡献:确保你可以在本地通过你的开发IDE、控制台或docker运行完整的
pytest测试套件。
前提条件:本地 Python 环境#
本地测试需要 sktime 的 开发版本 ,详情请点击链接。
在你的环境中,确保你有一个带有开发者依赖的可编辑的 sktime 开发版本。如果尚未安装,请安装:
pip install -e .[dev]这将安装一个可编辑的 开发版本 的 sktime,它将包含你所做的更改。
备注
对于不同操作系统上的故障排除,请参阅我们详细的 安装说明。
代码质量检查#
我们使用 pre-commit 进行代码质量检查(这一过程我们也称为“linting”检查)。
我们建议您也在本地设置此项,因为这将确保您在首次提交PR时不会遇到代码质量错误!这些检查会在您进行新的提交之前自动运行。要进行设置,只需导航到sktime文件夹并安装我们的预提交配置:
pre-commit install
pre-commit 现在应该会自动运行你提交的任何内容!如果在设置过程中遇到任何问题,请告知我们。
有关开发者代码质量和代码检查的详细指南,请参阅 编码标准。
通过 check_estimator 测试对象#
对于针对估计器或对象的本地化贡献,可以使用 check_estimator 工具。
为此,请按照 估计器开发指南 中的说明进行操作。
完整的测试套件通过 pytest 运行#
完整的测试套件可以通过 pytest 在本地运行,sktime 使用它作为其测试框架。
通过 make 在控制台运行所有测试(仅限基于Unix的操作系统):
make test
或者,从路径中包含 pytest 的控制台,从仓库根目录:
pytest ./sktime
此外,开发者IDE如PyCharm或VS Code将通过``pytest``自动识别测试,请参考IDE的文档以通过嵌入的图形用户界面进行测试。
通过 doctest 运行文档字符串示例#
sktime 的 Python 模块配备了包含示例的文档字符串,这些示例展示了每个模块中特定类的使用方法。
可以使用 doctest 批量执行文档字符串示例,以确保情况确实如此。
要使用 pytest 对所有文件运行 doctest,请导航到根目录并执行以下命令:
pytest --doctest-modules
要在没有 pytest 的情况下对所有文件运行 doctest,请导航到根目录并执行以下命令:
- (适用于
UNIX操作系统) find . -name "*.py" -print0 | xargs -0 python -m doctest -v -o=ELLIPSIS
- (适用于Windows)
for /r %G in (*.py) do python -m doctest -v "%G" -o=ELLIPSIS
要在特定模块上运行 doctest,请导航到模块所在的目录并执行以下命令:
python -m doctest -v -o=ELLIPSIS {filename}
执行此命令将显示模块中包含的所有文档字符串的测试结果。
替代方案:容器化测试#
我们还提供了一个通过 docker 容器执行测试套件的选项。这需要本地安装 docker。要安装,请按照 这里 的说明进行操作。
测试用的docker镜像位于文件夹 build_tools/docker 中,镜像名称为 PYTHON_VERSION ,基于以下Python版本:
Python 版本 |
PYTHON_VERSION |
|---|---|
3.8 | py38 |
|
3.9 | py39 |
|
3.10 | py310 |
|
3.11 | py311 |
|
3.12 | py312 |
|
dockerized 测试也可以通过 make 执行,使用命令 make dockertest PYTHON_VERSION=<python version>。PYTHON_VERSION 参数指定 Python 版本,并且与上表中的字符串相同。例如,要在 Python 版本 3.8 中执行测试,请使用 make dockertest PYTHON_VERSION=py38。
持续集成#
基础设施概述#
本节概述了我们使用的架构和持续集成服务。
平台 |
操作 |
配置 |
|---|---|---|
在Linux、MacOS和Windows上构建/测试/分发,运行代码质量检查 |
||
构建/部署文档 |
||
测试覆盖率 |
用于构建、单元测试和分发的附加脚本可以在 build_tools/ 中找到。
测试覆盖率#
我们使用 coverage 、 pytest-cov 插件和 codecov 来进行测试覆盖。