用途:为机器学习项目提供可复用的测试模式,覆盖数据质量、模型单元测试、行为测试和性能回归门禁,帮助在训练前与 CI 中建立质量门槛。
主要能力:
- 会话级 pytest 夹具:用 @pytest.fixture(scope="session") 一次性加载模型、分词器与测试数据,避免每个测试重复冷启动。
- 数据质量测试:用 pandera 的 DataFrameSchema 与 Check 校验列类型、取值范围,并检查重复 ID、标签分布不均衡(少数类不低于 5%)、空值率(必要列零空值、其他列不超 10%)、特征范围及训练/测试集无 user_id 泄漏。
- 行为测试(CheckList 风格):最小功能测试要求明确正向/负向文本分类准确率不低于 90%,并处理否定表达;不变性测试检查替换人名、增删标点不改变预测,用于发现性别等偏见;方向性测试检查加入否定词使情感更负。
- 性能回归门禁:读取 tests/baselines/model_metrics.json 中的基线指标,用 assert 断言当前 F1、AUC 不低于基线减 0.01 容差,并检查 p99 单样本推理延迟不超过 50ms;基线缺失时 pytest.skip。
使用方式:在 conftest.py 定义共享夹具,测试文件按 tests/test_data_quality.py、tests/test_model_behavior.py、tests/test_model_performance.py 组织,用 pytest 运行;指标持续改善后,用注释中的 CLI 脚本重新生成基线文件。
适用场景:分类模型的回归测试、数据流水线校验、上线前的 CI 质量门禁。
限制:示例依赖 pandas、numpy、joblib、torch、transformers、pandera、scikit-learn、pytest 等库;classify_text 等辅助函数需按自身模型实现,资料未给出具体实现;也未提供安装命令、支持的模型范围与许可信息。