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

Robot Framework调用Python POST对接Zephyr返回400错误求助

问题解决方案

核心错误原因

Postman导出的Python requests代码自带了多余的Content-Type: multipart/form-data请求头,这是导出工具的常见问题。使用requests库上传文件时不需要手动指定这个头,requests会在你传入files参数时自动生成包含边界标识符(boundary)的正确Content-Type头,手动填写的头缺少boundary信息,服务器无法解析上传的表单数据,因此返回400错误。

修复后的Python代码

import requests
def upload_to_zephyr():
    url = "https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=someKey"
    payload = {}
    # 使用with上下文管理器自动关闭文件,避免资源泄露
    with open('/path-to-results/junitresult.xml', 'rb') as f:
        files = [('file', ('junitresult.xml', f, 'text/xml'))]
        headers = {
            # 移除手动设置的Content-Type头,由requests自动生成
            'Authorization': 'Bearer token value'
        }
        response = requests.post(url, headers=headers, data=payload, files=files)
        print(response.text)

其他需检查的配置项

  • 确认junit结果文件的路径在Robot用例运行环境下可正常访问,优先使用绝对路径避免工作目录差异导致的文件读取失败
  • 确认Authorization头中的Bearer令牌有效,未过期且具备Zephyr的结果上传权限
  • 确认URL中的projectKey参数和你要上传的Zephyr项目标识一致

你原有Robot框架的测试用例代码无需修改,直接调用修复后的Python方法即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:54:04