测试指南
MassFlow 项目致力于保持高质量的代码标准。为了确保功能的正确性和稳定性,我们使用 pytest 作为主要的单元测试框架。
本文档将指导你如何运行现有测试以及了解目前的测试覆盖范围。
看文档前,请参考视频:
https://www.bilibili.com/video/BV1KZWKz3Ek5/
然后参考官方文档网站:https://pytest.cn/en/stable/
仅参考下面部分即可:

Pytest 简介
pytest 是一个成熟且功能强大的 Python 测试工具,它以其简洁的语法和强大的扩展性而闻名。
基本用法
在 MassFlow 项目中,所有的测试代码都位于 tests/ 目录下。你可以通过终端在项目根目录执行以下命令来运行测试:
运行所有测试:
pytest运行特定文件的测试:
pytest tests/test_read.py显示详细输出(包括通过的测试):
pytest -v测试插件与配置
MassFlow 的测试环境配置旨在简化开发流程。虽然 pytest 本身功能强大,但我们通常会结合以下插件或模式使用(视具体开发环境配置而定):
- pytest-memray:用于追踪代码内存消耗情况
- pytest-benchmark:用于测试代码运行时间
- pytest-cov: 用于生成代码覆盖率报告,帮助开发者了解哪些代码行未被测试覆盖。
基本的测试流程
测试的目标主要聚焦于三个方面:
首先是运行时间,在基本的测试结果里面,我们需要借助插件完成高精度的时间测量,如:
@pytest.mark.benchmark(timer=time.perf_counter)benchmark 主要提供了一个代码运行时间的基准测试方法,包含多次运行测试,测试热身等操作,避免因为系统导致的时间不准确的问题。

其次是运行占用内存,使用 pytest --memray 可以激活插件,在运行的同时计算内存消耗。注意插件激活的时候,运行时间是不准确的,仅关注内存使用即可。

最后是代码运行结果是否正确,代码运行是否正确的判断取决于代码的编写目的。比如降噪的代码,就要对比降噪后的信号和降噪前的 SNR 还有相似度,将这两个指标作为判断。这里不再赘述,每个代码有每个代码的测试要求,根据情况设计,基本方法包含:
- 量化指标测试
- 与标准代码结果对比测试(如在相同方法和参数下,与 Cardinal 对比)
现有测试项目概览
目前的测试套件主要覆盖了核心的数据处理和工具模块。以下是 tests/ 目录下各测试文件的详细介绍:
1. 噪音消除测试 (test_noise_reduction.py)
该模块主要针对质谱数据的噪音处理算法进行验证。
- 测试目标: 验证平滑算法(如 Savitzky-Golay 滤波器)和基线校正算法的输出是否符合预期。
- 关联文档: 详情可参考 噪音消除文档。
2. 数据读取测试 (test_read.py)
这是项目的基础测试模块,确保数据能够被正确加载。
- 测试目标: 验证文件读取器能否正确解析原始数据文件,并将其转换为项目内部的数据结构。
- 关键点: 检查元数据提取和质谱图数据的完整性。
3. 工具函数测试 (test_tools.py)
该模块包含对项目中通用辅助函数的单元测试。
贡献测试
我们强烈建议在提交新功能或修复 Bug 时包含相应的测试用例。
- 新测试文件应放置在
tests/目录下。 - 文件名必须以
test_开头(例如test_)。