📜  子文件夹中的 pytest 测试 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:39:01.435000             🧑  作者: Mango

子文件夹中的 pytest 测试 - TypeScript

在使用 TypeScript 进行编程时,我们经常需要使用 pytest 进行测试。当我们的代码文件分布在多个子文件夹中时,如何对这些子文件夹中的测试进行组织和执行呢?本文将介绍如何使用 pytest 对 TypeScript 子文件夹中的测试进行测试。

目录结构

假设我们的项目目录结构如下:

project/
 |- src/
 |   |- folder1/
 |   |   |- module1.ts
 |   |   |- module2.ts
 |   |- folder2/
 |   |   |- module3.ts
 |   |   |- module4.ts
 |- tests/
 |   |- folder1/
 |   |   |- test_module1.ts
 |   |   |- test_module2.ts
 |   |- folder2/
 |   |   |- test_module3.ts
 |   |   |- test_module4.ts

其中,src 文件夹存放着所有源代码文件,tests 文件夹存放着所有测试文件。

配置 pytest.ini

首先,我们需要在项目的根目录下添加一个 pytest.ini 文件,来配置 pytest 的测试参数。该文件应该包含以下内容:

[pytest]
addopts = --strict-markers

其中 --strict-markers 参数会让 pytest 在运行测试时,检查测试函数是否有正确的标记(marker)。这可以保证我们只运行已标记的测试函数。

在测试文件中标记测试函数

为了让 pytest 能够正确地运行子文件夹中的测试函数,我们需要在测试文件中标记出所属的模块。例如,在 test_folder1/test_module1.ts 文件中,我们可以这样写:

import { test } from 'pytest';

test('@folder1 @module1', () => {
  // 这里是测试函数
});

其中,@folder1 标记表示该测试函数属于 src/folder1 文件夹中的代码模块,@module1 标记表示该测试函数属于 module1.ts 文件中。

运行测试

最后,我们可以在项目的根目录中运行 pytest,它会自动搜索子文件夹中所有的测试文件,并执行所有已标记的测试函数:

$ pytest

你会看到类似如下的输出:

======================= test session starts ========================
platform linux -- Python 3.8.5, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /path/to/project
plugins: typeguard-2.12.0, metadata-1.11.0
collected 4 items

tests/folder1/test_module1.py ✓                                 25%
tests/folder1/test_module2.py ✓✓                                50%
tests/folder2/test_module3.py ✓✓✓                               75%
tests/folder2/test_module4.py ✓✓✓✓                             100%

======================== 4 passed in 0.48s ========================

至此,我们已经完成了子文件夹中的 pytest 测试 - TypeScript。