如何解决Robot Framework中POST请求返回HTTP 400 Bad Request错误
问题排查方案
一、当前测试用例存在的明显错误
- 授权头变量校验问题:你代码中使用
Authorization=${tpre} ${token}构造授权头,需先确认${tpre}变量是否已正确赋值为Bearer,若该变量未定义或值错误,会直接导致授权校验失败返回400。 - 请求参数缺失:对比Postman导出的Python代码,正式请求URL携带了必填查询参数
?format=json,但你的Robot Framework用例中调用post on session请求/orders接口时未传递该参数,是400错误的高频诱因。 - Cookie传参格式错误:你将Cookie字段直接写在请求头字典中不符合RequestsLibrary的传参规则,
Post On Session关键字有独立的cookies参数用来传递Cookie值,不要混入headers中。 - 请求体序列化错误:你通过
get file读取的API/data.txt如果是原生JSON字符串,直接传给json=${body}会触发二次序列化,导致请求体格式异常。正确做法是将读取到的JSON字符串转成字典后再传给json参数,或是直接传给data参数。
二、HOST请求头添加方法
- Robot Framework(RequestsLibrary):直接在构造header字典时添加Host键值对即可,示例:
${header}= create dictionary Host=domain:10001 Authorization=${tpre} ${token} Content-Type=application/json
- Python requests:同样直接在headers字典中新增Host字段即可,示例:
headers = { 'Host': 'domain:10001', 'Authorization': 'Bearer xxx', 'Content-Type': 'application/json' }
三、通用400错误排查步骤
- 打印完整请求信息:Robot Framework中可以在调用请求关键字时添加参数
expected_status=any,之后打印${resp.request.url}、${resp.request.headers}、${resp.request.body},和Postman的请求信息逐字段对比,即可快速找到差异点。 - 读取完整响应内容:不要只查看状态码,400错误的响应体一般会明确返回错误原因(如参数缺失、格式错误等),直接打印
${resp.text}即可获取具体报错提示。 - 校验Session基础配置:确认创建Session时传入的
${baseUrl}和Postman请求的域名、端口、前缀路径完全一致,避免因基础地址错误导致请求路径不符合预期。
内容的提问来源于stack exchange,提问作者Priyom saha
相关产品推荐
相关产品推荐

