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

Robot Framework创建带认证与请求头的会话遇TypeError问题求助

Robot Framework会话认证与请求头问题解决

嘿,你的这个TypeError: __init__() takes exactly 3 arguments (2 given)错误我之前也碰到过,主要是认证参数的写法不对,再加上变量定义、请求路径等几处小问题导致的,下面一步步给你修正:

1. 先把变量定义改对

Robot Framework里变量赋值不用=连接,也不需要额外加引号(除非值本身带特殊字符),你的变量定义应该改成这样:

*** Variables ***
${user}    user1api
${passwd}    password! 
&{headers}    Content-Type=application/json

这里我去掉了headers里的Authorization,因为如果用auth参数的话,Robot会自动生成Basic认证的请求头,避免重复设置导致冲突。

2. 认证列表的写法要规范

你创建认证列表的时候,没给变量加${}标识,Robot根本识别不出这是变量,得改成:

${auth}=    Create List    ${user}    ${passwd}

3. Create Session和Get Request的正确用法

Create Session的auth参数需要接收一个包含用户名和密码的列表,另外Get Request的路径要和会话的基础URL配合好,别重复写URL部分。修正后的关键字代码如下:

*** Keywords ***
DO Status Get API
    ${auth}=    Create List    ${user}    ${passwd}
    Create Session    DOStatus    https://test.abc.com/api/status/7661/job    headers=${headers}    auth=${auth}
    ${resp}=    Get Request    DOStatus    /basic-auth/user/passwd
    # 可以加个日志看看响应内容,方便排查
    Log To Console    ${resp.json()}

额外补充两种认证方式

  • 如果你的接口要求手动设置Authorization头(不用auth参数),那得自己生成正确的Base64编码字符串:

    ${auth_str}=    Catenate    ${user}:${passwd}
    ${auth_b64}=    Encode String To Base64    ${auth_str}
    &{headers}    Content-Type=application/json    Authorization=Basic ${auth_b64}
    

    这种情况就不用在Create Session里加auth=${auth}参数了。

  • 记得检查请求路径是否正确:会话的基础URL是https://test.abc.com/api/status/7661/job,加上后面的/basic-auth/user/passwd,最终请求的URL是https://test.abc.com/api/status/7661/job/basic-auth/user/passwd,如果这不是你要的,得调整基础URL或者请求路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:44:41