Robot Framework:API调用中转义字符\的存储与传递问题
Robot Framework+Requests API测试:解决加密密钥反斜杠被重复转义问题
问题分析
从API响应JSON中提取带反斜杠的加密密钥时,Robot Framework会自动对反斜杠做转义(单个\变为\\);后续将密钥传入JSON请求体时,Requests库会再次对JSON内容做序列化转义,最终导致反斜杠变为\\\\,不符合接口要求。
解决方案
方案1:用Evaluate直接获取原始字符串
绕过Robot的自动转义逻辑,直接通过Python代码提取密钥的原始值:
${response} POST On Session session Name # 后续为其他输入内容 # 直接从JSON对象中提取原始字符串,避免Robot转义 ${encrypt_key} Evaluate ${response.json()['encryptKey']} Set Suite Variable $encrypt_key ${encrypt_key}
方案2:用String Replace手动修正转义
如果已获取带双反斜杠的密钥,直接替换成双反斜杠为单个反斜杠:
${response} POST On Session session Name # 后续为其他输入内容 Set Suite Variable $encrypt_key ${response.json()}[encryptKey] # 将双反斜杠替换为单个反斜杠 ${encrypt_key} String Replace ${encrypt_key} \\ \
方案3:直接构造原始JSON字符串(绕过字典转JSON的二次转义)
跳过Create Dictionary,直接拼接JSON字符串,避免Requests的自动序列化转义:
# 直接拼接JSON字符串,确保密钥中的反斜杠仅保留一个 ${json_data} Catenate SEPARATOR= ... {"document": "${document_b64}", "fileName": "${output_name}", "encryptKey": "${encrypt_key}"} ${response} POST On Session json=${json_data}
标题优化建议
可使用更精准的标题,比如:
- Robot Framework API测试:解决加密密钥反斜杠重复转义问题
- 如何避免Robot Framework+Requests传递带反斜杠密钥时的转义错误
内容的提问来源于stack exchange,提问作者Djiby Top
相关产品推荐
相关产品推荐

