Добавление заголовка авторизации в платформе робота - PullRequest
0 голосов
/ 09 декабря 2018

Я изучаю робот-фреймворк, автоматизация 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 FAIL AttributeError: объект 'str'не имеет атрибута 'items'

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Проблема связана с тем, как вы создаете словарь headers - в разделе «Переменные» файла набора нельзя использовать ключевые слова, это просто назначение.Таким образом, в соответствии с тем, как вы определили переменную там, «Создать словарь» был взят буквально - он оказался частью строки, которая является значением переменной.

Синтаксис для создания dict в разделе Variables:как это:

*** Variables ***
&{headers}       Authorization=Bearer abcde

Обратите внимание, как объявлена ​​переменная - ее префикс - не обычный символ доллара, а амперсанд (&);таким образом, вы указываете Robotframework, что значение переменной будет словарем.
Пары ключ-значение в dict разделены равным символом, формат - the_key=the_value.Вам не нужно указывать значение в кавычках (одинарное или двойное) - наоборот, если вы это сделаете, кавычки будут сохранены как часть значения;например, они не любой вид разделителя.
Наконец, если значение является строкой и в ней должно быть более одного последовательного символа пробела, используйте системную переменную ${SPACE};например:

*** Variables ***
&{my dict}       myKey=text with ${SPACE} 3 spaces   other=value
0 голосов
/ 09 декабря 2018

Я думаю, что нужно создать только объект словаря.Вы должны передать ключ и значение к нему.Ссылка 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...