针对LLM大语言模型知识库平台、RAG 检索增强生成、情感分析与语气交互等模块逐步落地,传统人工测试已无法满足高频迭代、大规模用例验证的需求。人工构造用例效率低、执行耗时长、结果评判主观性强,且在接口不稳定、服务偶发超时、中途断连等场景下,难以保证测试连续性与数据完整性。
为实现标准化、自动化、可复现、可追溯的大模型功能测评,本项目构建一套完整的 LLM 自动化测试体系:通过大模型自动生成高覆盖测试用例,批量调用模型接口完成对话与检索实测,支持接口异常容错、失败自动重试、断点续跑避免重复执行,自动完成预期与实际结果比对,并统一统计指标、生成可视化图表与正式测试报告,最终实现从用例生成→执行→评判→报告的全流程无人值守自动化,大幅提升大模型模块测试效率与交付可信度
一、项目目录结构
llm_auto_test/
├── llm_test_template.xlsx # 固定Excel用例模板
├── 01_generate_cases.py # 生成测试用例并写入Excel
├── 02_run_test.py # 调用接口+容错+断点续跑+失败重试
├── 03_compare_result.py # 预期与实际结果对比
├── 04_gen_report.py # 生成MD+HTML报告+可视化图表
├── run_all.py # 一键启动全流程
├── requirements.txt # 依赖包清单
└── reports/ # 报告、图表、日志输出目录
├── logs/
├── md_report/
├── html_report/
└── charts/
二、依赖包(requirements.txt)
pandas==2.2.1
openpyxl==3.1.2
requests==2.31.0
matplotlib==3.8.3
jinja2==3.1.3
logging
time
json
subprocess
安装命令:pip install -r requirements.txt
三、Excel 模板(llm_test_template.xlsx)
Sheet1:rag_test_cases(RAG 测试用例模板)
| 用例 ID | 问题 | 知识库分类 | 预期检索关键词 | 预期是否有答案 | 预期回答要点 |
|---|---|---|---|---|---|
| 财务 / HR / 行政 / 产品 / 无 | 是 / 否 |
Sheet2:emotion_test_cases(情感语气测试用例模板)
| 用例 ID | 用户文本 | 预期情绪 | 预期语气 | 预期回答关键词 |
|---|---|---|---|---|
| 正向 / 负向 / 中性 | 专业 / 安抚 / 友好 / 温和 |
四、完整脚本代码
-
01_generate_cases.py(生成测试用例) code.juejin.cn/api/raw/762…
-
02_run_test.py(接口调用 + 容错 + 断点续跑 + 失败重试) code.juejin.cn/api/raw/762…
-
03_compare_result.py(结果对比)
code.juejin.cn/api/raw/762… -
04_gen_report.py(生成报告+图表)
code.juejin.cn/api/raw/762… -
run_all.py(一键全流程启动)
code.juejin.cn/api/raw/762…
五、核心功能说明
1. 容错机制
- 接口超时、连接失败、服务宕机均有对应异常标记,不会中断脚本
- 失败用例自动重试 2 次,最大程度避免偶然异常导致测试失败
2. 断点续跑
- 首次执行全量用例,中途断开后再次执行,自动跳过已完成用例
- 从断点处继续执行,无需重复测试,节省时间
3. 自动化全流程
- 一键启动,自动完成用例生成→接口测试→结果对比→报告生成
- 无需人工干预,所有结果、日志、报告、图表自动保存
4. 多格式报告
- 生成 MD 格式报告(适配掘金、文档编写)
- 生成 HTML 格式可视化报告(带图表,更直观)
- 自动生成饼图、柱状图,展示测试结果
5. 可追溯性
- 所有操作、异常、执行结果写入日志,方便排查问题
- 每一步生成对应 Excel 文件,数据可追溯
六、使用方法
- 配置模型接口地址:修改所有脚本中
url="http://127.0.0.1:8000/chat"为实际接口地址 - 安装依赖:
pip install -r requirements.txt - 启动模型服务,确保接口可正常调用
- 一键执行:
python run_all.py - 查看结果:所有报告、图表、日志在
./reports/目录下
七、断点续跑使用
若测试中途服务断开、脚本终止,无需修改任何代码,直接重新执行python run_all.py或python 02_run_test.py,脚本会自动识别已完成用例,从断点继续执行。