测试与持续集成#
本页概述了
贡献者的测试 - 代码风格和本地测试
维护者的测试 - 持续集成
如果您是贡献者或开发者,请确保您已设置好开发环境,并安装了 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
。
持续集成#
基础设施概览#
本节概述了我们使用的基础设施和持续集成服务。
平台 |
操作 |
配置 |
---|---|---|
在 Linux, MacOS 和 Windows 上构建/测试/分发,运行代码质量检查 |
||
构建/部署文档 |
||
测试覆盖率 |
用于构建、单元测试和分发的附加脚本可在 build_tools/ 中找到。
测试覆盖率#
我们使用 coverage、pytest-cov 插件和 codecov 来检查测试覆盖率。