测试与持续集成#

本页概述了

  • 贡献者的测试 - 代码风格和本地测试

  • 维护者的测试 - 持续集成

如果您是贡献者或开发者,请确保您已设置好开发环境,并安装了 sktime开发版本

sktime 在 GitHub 上使用持续集成(CI)服务,自动检查新的拉取请求是否会破坏现有功能,以及是否符合代码质量标准,例如通用编码风格。

本地测试#

如果您为 sktime 贡献代码,以下指南将介绍如何在提交拉取请求之前在本地测试您的代码。

我们建议

  • 在您的本地开发 IDE 中设置代码质量检查

  • 学习如何对估计器和 sktime 对象使用 check_estimator 工具

  • 高级贡献:确保您可以通过您的开发 IDE、控制台或 Docker 在本地运行完整的 pytest 测试套件

前提条件:本地 Python 环境#

本地测试需要 sktime开发版本,请点击链接查看详细说明。

在您的环境中,确保您拥有一个可编辑的包含开发者依赖项的 sktime 开发版本。如果尚未安装,请安装

pip install -e .[dev]

这将安装一个可编辑的 sktime 开发版本,其中将包含您所做的更改。

注意

有关不同操作系统的故障排除,请参阅我们详细的安装说明

代码质量检查#

我们使用 pre-commit 进行代码质量检查(我们也称此过程为“linting”检查)。

我们建议您也在本地设置此项,因为这将确保您在首次提交 PR 时不会遇到代码质量错误!这些检查会在您进行新提交之前自动运行。要进行设置,只需导航到 sktime 文件夹并安装我们的 pre-commit 配置

pre-commit install

现在,pre-commit 应该会在您每次提交时自动运行!如果您在设置过程中遇到任何问题,请告诉我们。

有关开发者代码质量和 linting 的详细指南,请参阅编码规范

通过 check_estimator 测试对象#

对于仅限于估计器或对象的贡献,可以使用 check_estimator 工具。

为此,请遵循估计器开发指南中的说明

通过 pytest 运行完整测试套件#

完整的测试套件可以通过 pytest 在本地运行,sktime 使用 pytest 作为其测试框架。

要通过 make 在控制台运行所有测试(仅限类 Unix 操作系统)

make test

或者,在路径中包含 pytest 的控制台中,从仓库根目录运行

pytest ./sktime

此外,诸如 PyCharm 或 VS Code 之类的开发者 IDE 将自动识别通过 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。要安装,请遵循此处的说明。

用于测试的 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

Docker 化测试也可以通过 make 执行,命令为 make dockertest PYTHON_VERSION=<python version>PYTHON_VERSION 参数指定 Python 版本,其字符串与上表相同。例如,要在 Python 3.8 版本中执行测试,请使用 make dockertest PYTHON_VERSION=py38

持续集成#

基础设施概览#

本节概述了我们使用的基础设施和持续集成服务。

平台

操作

配置

GitHub Action

在 Linux, MacOS 和 Windows 上构建/测试/分发,运行代码质量检查

.github/workflows/

Read the Docs

构建/部署文档

.readthedocs.yml

Codecov

测试覆盖率

.codecov.yml, .coveragerc

用于构建、单元测试和分发的附加脚本可在 build_tools/ 中找到。

测试覆盖率#

我们使用 coveragepytest-cov 插件和 codecov 来检查测试覆盖率。