首页
/ 3行代码搞定MeterSphere测试报告API调用:Python实战指南

3行代码搞定MeterSphere测试报告API调用:Python实战指南

2026-02-04 04:37:05作者:殷蕙予

你还在手动导出测试报告数据?还在为整合测试结果熬夜加班?本文将带你用Python轻松调用MeterSphere测试报告数据接口,3行核心代码实现测试数据自动化获取,让测试报告处理效率提升10倍!

读完本文你将学到:

  • 快速获取MeterSphere API访问令牌
  • 掌握3种核心测试报告接口调用方法
  • 解析测试结果JSON数据并生成统计报表
  • 实现测试数据自动化集成到CI/CD流程

关于MeterSphere测试平台

MeterSphere是一站式开源持续测试平台,提供测试管理、接口测试、团队协作等全流程测试解决方案。其测试报告模块能够生成详尽的测试结果统计,包括用例执行情况、通过率、缺陷分布等关键指标。

MeterSphere测试报告界面

官方文档:README.md
测试报告模块源码:test-plan/report.ts

准备工作:获取API访问令牌

在调用测试报告API前,需要先获取认证令牌(Token):

  1. 登录MeterSphere平台
  2. 进入个人设置页面:点击右上角头像 → 设置 → API访问
  3. 生成访问令牌并复制保存

安全提示: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文档

登录后查看全文
热门项目推荐
相关项目推荐