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

我正在学习机器人框架,API 自动化:


*** 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

我在 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'


MMTTMM
浏览 148回答 3
3回答

慕虎7371278

我认为只需要更改创建字典对象。您应该将键和值传递给它。参考链接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

BIG阳

问题来自您创建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

一只萌萌小番薯

我能够得到成功的响应,但应该不带双引号传递令牌。前任 :${bearerToken}=  Bearere sdkdjflk234jrlksdklflksf
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python