как использовать Session Token в API остальных - PullRequest
0 голосов
/ 28 декабря 2018

Я пытался использовать этот код, и он не работает, мне нужно получить токен сеанса с помощью первого ключевого слова и использовать токен сеанса во втором ключевом слове, но отображается сообщение об ошибке: AttributeError: у объекта 'str' нет атрибута 'items'

Get SessionToken
            Create Session    session    https://url    verify=True
            ${resp}=    Get Request    session    uri?appToken=xxxxxx&userId=xxxx&password=xxxx
            Should Be Equal As Strings    ${resp.status_code}    200
            ${json} =  Set Variable  ${resp.json()}
            Dictionary Should Contain Key    ${json}[0]    sessionToken
            ${SessionToken}=    Get From Dictionary    ${json["result"]}    sessionToken
            [Return]    ${SessionToken}

        Check Transaction Detail MCM
            ${headers}=   Set Variable     Get SessionToken
            Create Session    session  https://url   verify=True
            ${resp}=   Get Request    session    /token   URI    headers = ${headers}

1 Ответ

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

Ключевое слово Set Variable используется для назначения статического (например, «предопределенного») значения переменной.На языке программирования эта строка

${headers}=   Set Variable     Get SessionToken

будет эквивалентна:

headers =  "Get SessionToken"

Переменная ${headers} теперь имеет в качестве значения строку «Get SessionToken», независимо от того, есть лиключевое слово с тем же именем (для фреймворка это просто совпадение (на самом деле фреймворк не «заботится» или «не знает» об этом совпадении)).

Если вы хотите сохранить возвращаемое значениеключевое слово Get SessionToken - затем просто назначьте его:

${headers}=     Get SessionToken

${headers} теперь будет иметь в качестве значения, каким бы ни было содержимое ${SessionToken}.

Вы могли бы быть еще более явным с этой конструкцией:

${headers}=     Run Keyword    Get SessionToken

, но это просто плохой стиль (Run Keyword имеет очень твердое использование, только не в простых / тривиальных конструкциях, подобных этой).


Имейте в виду, что параметр headers в ключевом слове Get Request ожидает словарь, поэтому убедитесь, что в конечном итоге этот тип есть.
Это была именно та ошибка, которую вы получили - как вы назначилистроковое значение аргумента, оно не удалось, за исключениемдиктат (технически это вызвало исключение, поскольку строковый объект не имеет метода items() - например, ключевое слово предполагает тип и пытается использовать его как dict)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...