3行代码搞定MeterSphere测试报告API调用:Python实战指南
你还在手动导出测试报告数据?还在为整合测试结果熬夜加班?本文将带你用Python轻松调用MeterSphere测试报告数据接口,3行核心代码实现测试数据自动化获取,让测试报告处理效率提升10倍!
读完本文你将学到:
- 快速获取MeterSphere API访问令牌
- 掌握3种核心测试报告接口调用方法
- 解析测试结果JSON数据并生成统计报表
- 实现测试数据自动化集成到CI/CD流程
关于MeterSphere测试平台
MeterSphere是一站式开源持续测试平台,提供测试管理、接口测试、团队协作等全流程测试解决方案。其测试报告模块能够生成详尽的测试结果统计,包括用例执行情况、通过率、缺陷分布等关键指标。
官方文档:README.md
测试报告模块源码:test-plan/report.ts
准备工作:获取API访问令牌
在调用测试报告API前,需要先获取认证令牌(Token):
- 登录MeterSphere平台
- 进入个人设置页面:点击右上角头像 → 设置 → API访问
- 生成访问令牌并复制保存
安全提示:API令牌具有账号同等权限,请勿分享给他人或提交到代码仓库
核心API接口详解
MeterSphere提供了丰富的测试报告数据接口,以下是最常用的3类接口:
1. 测试报告列表接口
// API路径定义:[test-plan/report.ts](https://gitcode.com/gh_mirrors/me/metersphere/blob/542c2757a59eff5dad846bfecfc8afdf3b8d69f0/frontend/src/api/requrls/test-plan/report.ts?utm_source=gitcode_repo_files)
export const PlanReportListUrl = '/test-plan/report/page';
功能:获取测试报告列表,支持分页和筛选
请求方式:POST
返回数据:报告ID、名称、创建时间、执行状态等基本信息
2. 测试报告详情接口
// API路径定义:[test-plan/report.ts](https://gitcode.com/gh_mirrors/me/metersphere/blob/542c2757a59eff5dad846bfecfc8afdf3b8d69f0/frontend/src/api/requrls/test-plan/report.ts?utm_source=gitcode_repo_files)
export const PlanReportDetailUrl = '/test-plan/report/get';
功能:获取指定报告的详细测试结果
请求方式:GET
参数:reportId - 报告ID
返回数据:用例总数、通过数、失败数、跳过数、通过率等统计数据
3. 测试用例详情接口
// API路径定义:[test-plan/report.ts](https://gitcode.com/gh_mirrors/me/metersphere/blob/542c2757a59eff5dad846bfecfc8afdf3b8d69f0/frontend/src/api/requrls/test-plan/report.ts?utm_source=gitcode_repo_files)
export const ReportFeatureCaseListUrl = '/test-plan/report/detail/functional/case/page';
功能:获取报告中具体测试用例的执行结果
请求方式:POST
参数:reportId - 报告ID,pageNum - 页码,pageSize - 每页条数
返回数据:用例ID、名称、执行结果、耗时、错误信息等
Python调用示例
环境准备
首先安装必要的Python库:
pip install requests pandas
基础调用模板
以下是调用测试报告API的通用模板:
import requests
# 配置信息
BASE_URL = "http://your-metersphere-server:8081"
API_TOKEN = "your-api-token-here"
REPORT_ID = "your-report-id"
# 请求头
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
# 获取报告详情
def get_report_detail(report_id):
url = f"{BASE_URL}/test-plan/report/get"
params = {"reportId": report_id}
response = requests.get(url, headers=headers, params=params)
return response.json()
# 调用示例
report_data = get_report_detail(REPORT_ID)
print(f"测试报告: {report_data['name']}")
print(f"通过率: {report_data['passRate']}%")
print(f"总用例数: {report_data['total']}")
print(f"通过用例数: {report_data['passed']}")
高级应用:生成测试统计报表
import pandas as pd
import requests
# 获取测试用例结果
def get_test_cases(report_id, page_num=1, page_size=100):
url = f"{BASE_URL}/test-plan/report/detail/functional/case/page"
data = {
"reportId": report_id,
"pageNum": page_num,
"pageSize": page_size
}
response = requests.post(url, headers=headers, json=data)
return response.json()
# 获取所有测试用例
cases = []
page_num = 1
while True:
result = get_test_cases(REPORT_ID, page_num)
cases.extend(result['data']['list'])
if page_num >= result['data']['pages']:
break
page_num += 1
# 转换为DataFrame并分析
df = pd.DataFrame(cases)
# 统计各状态用例数量
status_counts = df['status'].value_counts()
# 计算各模块通过率
module_pass_rate = df.groupby('moduleName').apply(
lambda x: (x['status'] == 'PASSED').mean() * 100
).sort_values(ascending=False)
# 打印统计结果
print("用例状态分布:")
print(status_counts)
print("\n模块通过率排名:")
print(module_pass_rate)
# 保存为Excel文件
df.to_excel("测试报告详情.xlsx", index=False)
print("\n测试用例详情已保存到测试报告详情.xlsx")
接口调用流程图
sequenceDiagram
participant 用户
participant Python脚本
participant MeterSphere服务器
用户->>Python脚本: 输入报告ID和API令牌
Python脚本->>MeterSphere服务器: 发送认证请求
MeterSphere服务器-->>Python脚本: 返回认证成功
loop 获取报告数据
Python脚本->>MeterSphere服务器: 请求报告详情
MeterSphere服务器-->>Python脚本: 返回报告数据
Python脚本->>MeterSphere服务器: 请求用例结果
MeterSphere服务器-->>Python脚本: 返回用例数据
end
Python脚本->>Python脚本: 数据处理和统计
Python脚本->>用户: 输出统计结果和Excel文件
常见问题解决
1. 认证失败
问题表现:返回401状态码
解决方法:
- 检查API令牌是否正确
- 确认令牌是否过期,重新生成令牌
- 检查请求头格式是否正确,确保包含Bearer前缀
2. 报告数据为空
问题表现:返回数据为空或total为0
解决方法:
- 检查报告ID是否正确
- 确认报告是否已生成完成
- 检查用户是否有该报告的访问权限
3. 请求频率限制
问题表现:返回429状态码
解决方法:
- 增加请求间隔时间
- 实现请求重试机制
- 减少单次请求数据量
接口权限控制
MeterSphere的API访问权限由后端代码控制,相关权限配置可参考:
// API权限控制示例 [ApiScenarioReportController.java](https://gitcode.com/gh_mirrors/me/metersphere/blob/542c2757a59eff5dad846bfecfc8afdf3b8d69f0/backend/services/api-test/src/main/java/io/metersphere/api/controller/scenario/ApiScenarioReportController.java?utm_source=gitcode_repo_files)
@RequestMapping(value = "/api/report/scenario")
@RestController
public class ApiScenarioReportController {
@GetMapping("/get/{id}")
public ResultHolder getReport(@PathVariable String id) {
// 权限检查逻辑
if (!hasPermission(id)) {
return ResultHolder.error("无权限访问该报告");
}
// 获取报告数据
return ResultHolder.success(reportService.getReport(id));
}
}
总结
通过本文介绍的Python调用方法,你可以轻松获取MeterSphere的测试报告数据,实现测试结果的自动化分析和报表生成。这不仅能节省大量手动处理时间,还能将测试数据无缝集成到你的CI/CD流程或测试管理系统中。
建议收藏本文以便日后查阅,关注MeterSphere官方文档获取更多API使用技巧。如有任何问题,欢迎在社区论坛分享交流你的使用经验。
官方社区:MeterSphere社区论坛
API文档:MeterSphere API文档
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00