📅  最后修改于: 2023-12-03 15:39:01.435000             🧑  作者: Mango
在使用 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 的测试参数。该文件应该包含以下内容:
[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。