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文档
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00