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

求助:Robot测试框架从会话获取Access Token返回None

解决Robot Framework获取Access Token为None的问题

从你提供的脚本片段来看,拿不到access_token大概率是请求格式或者响应处理的细节没做对,我给你拆解几个排查和修复方向:

  • 先确认请求是否正确发送并返回预期响应
    首先要验证你的Post请求是否成功,接口有没有返回包含access_token的响应。可以在请求后加这两行代码,先排查基础问题:

    Should Be Equal As Integers ${resp.status_code} 200
    Log To Console ${resp.json()}
    

    运行后看控制台输出的完整响应JSON,确认里面确实有access_token这个键(注意拼写,比如是不是写成了access_to或者其他变体)。如果响应里根本没有这个字段,那得先排查接口为什么没返回,比如参数是否正确、权限是否足够。

  • 修复请求体的传递方式
    你设置了Content-Type=application/json,但用了data=${dict}参数传递请求体——这是个常见坑!Robot Framework的RequestsLibrary中,data参数会把字典编码成form-data格式,即使你手动设置了JSON的Content-Type也没用。正确的做法是用json=${dict}参数,这样库会自动把字典序列化为JSON字符串,并设置正确的Content-Type:

    ${resp} Post Request httpbin /api/Owners json=${dict} headers=${header}
    
  • 正确处理响应中的access_token
    你用evaluate的方式没问题,但要注意Robot变量的引用语法,以及键名的正确性。正确的写法应该是:

    ${accessToken}= evaluate ${resp}.json().get("access_token", None)
    

    或者更符合Robot风格的写法,用BuiltIn库的Get From Dictionary(需要先把响应转成字典):

    ${resp_json}= Set Variable ${resp.json()}
    ${accessToken}= Get From Dictionary ${resp_json} access_token ${None}
    

    这样如果键不存在,会返回你指定的默认值${None},方便排查。

  • 检查会话创建的细节
    确认${server_URL}是否正确,verify=${True}会不会因为SSL证书问题导致请求失败?如果是测试环境的自签证书,可以改成verify=${False}先排除这个问题:

    Create Session httpbin ${server_URL} verify=${False}
    

先按上面的步骤逐一排查,尤其是请求体的传递方式,这个是最容易踩的坑!

内容的提问来源于stack exchange,提问作者Pothuri Sravanasandhya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:48:18