Как передать учетные данные в запрос PEST RESTinstance в среде робота? - PullRequest
0 голосов
/ 12 ноября 2018

Python Code (работает нормально):

 credentials = ("key","token")
 verify = False
 if not verify:
     from requests.packages.urllib3.exceptions import InsecureRequestWarning  
     requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

response = requests.post(url, auth=credentials, data=json.dumps(payload), headers={'content-type': 'application/json'}, verify=verify)
status = response.status_code

Robot Framework Код:

Я хотел бы продублировать такое же тестирование API в среде робота, но я застрял, как передавать учетные данные в метод PEST RESTinstance

*** Settings ***
Library         REST    url=https://testhost.com   ssl_verify=${verify}

*** Variables ***
header = {"content-type": "application/json"}

*** Test Cases ***
Test Task
    POST     endpoint=/api/something   body=${payload}   headers=${header}
    Output   response status

СТАТУС ОТВЕТА ЗА ОШИБКИ - 401

1 Ответ

0 голосов
/ 12 ноября 2018

Аргумент auth в запросах post() - это просто ярлык для базовой аутентификации http.
А с другой стороны, очень простой (следовательно, базовый) - aзаголовок с именем «Авторизация», со значением «Basic b64creds », где b64creds - это кодированная в base64 форма строки «user: password».

Итак, потокэто довольно просто - закодируйте учетные данные и добавьте их в качестве заголовка.Есть только одна оговорка - модуль base64 Python работает с байтами , где строки в Robotframework / python3 являются юникодными, поэтому их необходимо преобразовать.

${user}=    Set Variable    username
${pass}=    Set Variable    the_password

# this kyword is in the Strings library
${userpass}=    Convert To Bytes    ${user}:${pass}   # this is the combined string will be base64 encode
${userpass}=    Evaluate    base64.b64encode($userpass)    base64

# add the new Authorization header
Set To Dictionary    ${headers}    Authorization    Basic ${userpass}

# and send the request with the header in:
POST     endpoint=/api/something   body=${payload}   headers=${header}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...