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
相关产品推荐
相关产品推荐

