测试 TLJH#

单元测试和集成测试是 TLJH 的核心部分,与代码和文档同样重要。它们有助于验证代码是否如我们所想地工作,并在发生更改时持续如此。它们还有助于以精确的术语传达我们期望代码做什么。

集成测试#

TLJH 是一个发行版,其主要价值在于我们对要使用的组件及其如何协同工作的许多有主见的决策。集成测试非常适合测试各种组件是否协同工作并按预期运行。因此,我们编写了大量的集成测试,并为此付出了比单元测试更多的努力。

所有集成测试都在每次拉取请求(PR)和合并时在 GitHub Actions 中运行,确保我们不会有损坏的测试持续太久。

集成测试位于 git 仓库的 integration-tests 目录中。py.test 用于编写集成测试。每个文件都应包含可以按任何顺序针对同一个 TLJH 安装运行的测试。

在本地运行集成测试#

你需要安装 docker,并且运行集成测试的用户无需 sudo 即可调用它。

然后你可以使用以下命令运行测试:

.github/integration-test.py run-test <name-of-run> <test-file-names>
  • <name-of-run> 是测试的标识符——你可以选择任何你想要的名字

  • <test-file-names>> 是测试文件列表(在 integration-tests 下),应一次性运行。

例如,要运行所有基本测试,你可以这样写:

.github/integration-test.py run-test basic-tests \
   test_hub.py \
   test_proxy.py \
   test_install.py \
   test_extensions.py

这将针对同一个 TLJH 安装运行这三个文件中的测试并报告错误。

如果你想使用自定义的 pip 规范运行引导脚本的测试,可以使用 --bootstrap-pip-spec 参数

.github/integration-test.py run-test <name-of-run> <test-file-names> \
   --bootstrap-pip-spec="git+https://github.com/your-username/the-littlest-jupyterhub.git@branch-name"