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

