You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Appium+Python为多测试组合生成专业测试报告

基于Appium+Python测试体系的单测试组合报告生成方案

报告核心字段规范

每个测试组合的报告至少需包含以下可追溯字段:

  • 测试组合唯一ID:可使用「时间戳+组合特征哈希值」生成,方便后续定位回溯
  • 组合参数明细:覆盖你遍历的所有维度参数,包括文件后缀名、文件大小、文件来源(本地/相册/云盘)、应用选中状态等,直接从已存储的CSV/JSON数据中读取映射即可
  • 预置条件:测试前的应用状态、设备存储状态、权限配置信息
  • 执行步骤:与当前组合对应的操作路径,可提前编写通用模板,替换参数即可复用
  • 预期结果:对应组合的官方要求处理逻辑,例如支持的格式应跳转预览,不支持的格式弹出合规提示
  • 实际结果:测试时抓取的接口返回值、UI状态、报错日志、Appium截图存储路径
  • 测试结论:通过/未通过/阻塞,异常情况需标注缺陷等级
  • 附加信息:测试时间、设备型号、系统版本、被测App版本号

实现逻辑(可直接复用的Python代码)

你已经完成了测试组合遍历和结果存储,只需基于现有CSV数据填充报告模板即可,无需额外采集数据:

步骤1:读取已存储的测试结果数据

import csv
import json
from string import Template
from datetime import datetime

# 读取你导出的测试结果CSV
test_cases = []
with open("test_result.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 转换CSV中存储的JSON格式组合参数为字典
        row["combination_params"] = json.loads(row["combination_params"])
        test_cases.append(row)

步骤2:定义通用报告模板

# 可根据业务需求自行增减字段
REPORT_TPL = Template("""
# 测试组合报告 编号:$case_id
## 基础信息
- 测试时间:$test_time
- 设备信息:$device_model | 系统版本 $os_version | App版本 $app_version
- 测试结论:$test_result

## 组合参数明细
$combination_table

## 测试执行记录
- 预置条件:应用已授予存储权限,对应测试文件已预置到设备指定路径
- 执行步骤:1. 进入文件选择模块 2. 选择对应来源路径 3. 选中目标测试文件 4. 提交选择
- 预期结果:$expect_result
- 实际结果:$actual_result
$error_log_part
$screen_shot_note
""")

步骤3:批量生成单组合报告

for case in test_cases:
    # 转换组合参数为易读格式
    combination_table = "\n".join([f"- {k}: {v}" for k,v in case["combination_params"].items()])
    # 动态填充异常信息
    error_log_part = f"> 错误日志:\n> {case['error_log']}" if case.get("error_log") else ""
    screen_shot_note = f"- 截图路径:{case['screen_shot_path']}" if case.get("screen_shot_path") else ""
    # 填充模板生成报告内容
    report_content = REPORT_TPL.substitute(
        case_id = case["case_id"],
        test_time = datetime.fromtimestamp(int(case["test_ts"])).strftime("%Y-%m-%d %H:%M:%S"),
        device_model = case["device_model"],
        os_version = case["os_version"],
        app_version = case["app_version"],
        test_result = case["test_result"],
        combination_table = combination_table,
        expect_result = case["expect_result"],
        actual_result = case["actual_result"],
        error_log_part = error_log_part,
        screen_shot_note = screen_shot_note
    )
    # 保存单组合Markdown格式报告
    with open(f"./reports/case_{case['case_id']}.md", "w", encoding="utf-8") as f:
        f.write(report_content)

可选优化方向

  • 所有异常案例自动关联对应Appium运行时抓取的日志、截图、元素树文件,降低问题排查成本
  • 额外生成总览报告,统计所有组合的通过率、各文件类型的失败率、异常分布情况
  • 未通过用例可直接生成缺陷单填充内容,减少提BUG的重复工作量

内容的提问来源于stack exchange,提问作者avishak chakroborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:36:04