为了账号安全,请及时绑定邮箱和手机立即绑定

在机器人框架中添加授权标头

在机器人框架中添加授权标头

MMTTMM 2021-09-11 17:33:09
我正在学习机器人框架,API 自动化:*** Settings ***Library  RequestsLibraryLibrary  CollectionsLibrary  String*** Variables ***${headers}       Create Dictionary  Authorization Bearer abcde*** Test Cases ***Make a simple REST API call    [Tags]  API    Create Session  my_json  http://localhost:3000    Log  ${headers}    ${response} =  Get Request  my_json  /posts   headers=${headers}    Log  ${response}    # Check the Response status    Should Be Equal As Strings  ${response.status_code}  403#    ${response} =  Get Request  my_json /posts    ${json} =  Set Variable  ${response.json()}    Log  ${json}    Log  len(${json})    Should Be Equal As Strings  ${json['name']}  rajesh我在 log.html 中收到此错误文档:对使用给定的会话对象发送 GET 请求 alias开始/结束/经过:20181209 18:43:04.159 / 20181209 18:43:04.175 / 00:00:00.016 18:43:04.175 失败 AttributeError: 'str' 对象没有属性 'str'
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我认为只需要更改创建字典对象。您应该将键和值传递给它。参考链接BuildIn(创建字典)


*** Settings ***

    Library  RequestsLibrary

    Library  Collections

    Library  String


    *** Variables ***

    ${headers}       Create Dictionary  Authorization=“Bearer abcde”



    *** Test Cases ***

    Make a simple REST API call

        [Tags]  API

        Create Session  my_json  http://localhost:3000

        Log  ${headers}

        ${response} =  Get Request  my_json  /posts   headers=${headers}

        Log  ${response}

        # Check the Response status

        Should Be Equal As Strings  ${response.status_code}  403

    #    ${response} =  Get Request  my_json /posts


        ${json} =  Set Variable  ${response.json()}

        Log  ${json}

        Log  len(${json})

        Should Be Equal As Strings  ${json['name']}  rajesh


查看完整回答
反对 回复 2021-09-11
?
BIG阳

TA贡献1859条经验 获得超6个赞

问题来自您创建headers字典的方式 - 在套件文件的 Variables 部分中,不能使用关键字,它是纯粹的赋值。因此,根据您在那里定义变量的方式,“创建字典”是按字面意思理解的 - 它最终作为变量值的字符串的一部分。


在变量部分创建字典的语法是这样的:


*** Variables ***

&{headers}       Authorization=Bearer abcde

注意变量是如何声明的——它的前缀不是通常的美元字符,而是一个与号 ( &);因此,您正在指示 Robotframework var 的值将是一个字典。

dict中的键值对用相等的char分隔,格式为the_key=the_value. 您不必将值放在引号中(单引号或双引号) - 相反,如果这样做,引号将作为值的一部分存储;例如,它们不是任何类型的分隔符。

最后,如果值是一个字符串并且需要在其中包含多个连续的空白字符,请使用系统变量${SPACE};例如:


*** Variables ***

&{my dict}       myKey=text with ${SPACE} 3 spaces   other=value


查看完整回答
反对 回复 2021-09-11
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我能够得到成功的响应,但应该不带双引号传递令牌。前任 :

${bearerToken}=  Bearere sdkdjflk234jrlksdklflksf


查看完整回答
反对 回复 2021-09-11
  • 3 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信