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

TestRail 如何通过API批量上传带附件的测试结果

最优实现方案

TestRail API本身不支持在add_results_for_cases请求中直接上传附件,所以官方推荐的标准实现逻辑分为两步执行,该方式兼容性最高、性能损失最小:

  • 第一步:调用add_results_for_cases接口提交所有测试用例的基础结果(包含状态、备注、自定义字段等信息),接口返回数据中会包含每个新生成测试结果的唯一标识result_id,你需要暂存测试用例ID和对应result_id的映射关系。
  • 第二步:遍历需要上传附件的测试用例,调用add_attachment_to_result接口,传入对应result_id和附件文件即可完成结果与附件的关联。

注意事项

  • 单次add_attachment_to_result请求最多支持上传256MB的单个文件,同一个测试结果需要关联多个附件的话,重复调用该接口传入同一个result_id即可。
  • 批量处理大量测试结果时,建议给附件上传步骤加简单的并发控制,避免触发API限流,默认公开实例的限流阈值为每分钟180次请求,私有部署实例可以按需调整阈值。
  • 如果你的上报场景是单条用例测试完成就即时上报,不需要批量提交结果,也可以直接调用add_result接口提交单条用例结果,拿到result_id后立即上传对应附件,逻辑更简单。

参考代码示例(Python)

import requests

# 基础配置替换为你自己的实例信息
TESTRAIL_HOST = "https://你的testrail实例地址"
API_ACCOUNT = "你的API账号"
API_KEY = "你的API密钥"
TEST_RUN_ID = 1 # 替换为你要上报的测试运行ID

# 第一步:批量提交测试结果
result_payload = {
    "results": [
        {"case_id": 1001, "status_id": 5, "comment": "登录功能异常,弹窗报错"},
        {"case_id": 1002, "status_id": 1, "comment": "注册功能验证通过"}
    ]
}
resp = requests.post(
    url=f"{TESTRAIL_HOST}/index.php?/api/v2/add_results_for_cases/{TEST_RUN_ID}",
    auth=(API_ACCOUNT, API_KEY),
    json=result_payload
)
# 存储case_id和result_id的映射
case_result_map = {item["case_id"]: item["id"] for item in resp.json()}

# 第二步:给报错的用例上传截图
with open("./login_error.png", "rb") as img_file:
    requests.post(
        url=f"{TESTRAIL_HOST}/index.php?/api/v2/add_attachment_to_result/{case_result_map[1001]}",
        auth=(API_ACCOUNT, API_KEY),
        files={"attachment": img_file}
    )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:04