Нужен способ установить переменную в одном ключевом слове и получить доступ к нему в другом, не возвращая переменные в среде робота - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть два ключевых слова в моем файле робота.Первый метод должен дать мне код состояния, а второй должен получить этот код из контекста и сопоставить его с аргументом, который я дал.Тестовый пример в основном проверяет, равен ли код состояния из API 200 или нет 200, который я передам в качестве аргумента.

Я пытался указать значение как переменную набора, а затем использовать переменную Get Variable.Ключевое слово Value, чтобы получить значение.Проблема в том, что аргумент для указанного выше ключевого слова приведет к ошибке «Определение переменной не найдено».Пожалуйста, найдите два метода The two methods where the variable has to be used

Причина, по которой я не хочу возвращаться с первого ключевого слова и давать второе, связана с форматом контрольных примеров, которые мне сказали использовать.

Test case

Я бы использовал хэш-карту в Java.Я новичок в области роботов и Pycharm.Кто-нибудь может мне помочь?

I Post A POST Request
create session  ${Post_Request.alias}  ${Post_Request.session_url}
${headers} =  create dictionary  Accept=${Post_Request.Accept}  Cache-Control=${Post_Request.Cache_Control}  Content-Type=${Post_Request.Content_Type}
${params} =  create dictionary   grant_type=${Post_Request.grant_type}  redirect_uri=${Post_Request.redirect_uri}  client_id=${Post_Request.client_id}  refresh_token=${Post_Request.refresh_token}
${resp} =  POST REQUEST  ${alias}  ${Post_Request.uri}   params=${params}   headers=${headers}
log to console  ${resp.json()}
set suite variable  ${response_code}  ${resp.status_code}

Verify The status Code   ${resp.status_code}
[Arguments]  ${resp.status_code}
${response_code} =  Get Variable Value  ${response_code}
log to console  resp_code=${response_code}
should be equal as strings  ${resp.status_code}  ${response_code}
log to console   Status code is 200

Ответы [ 2 ]

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

Вам нужно удалить [Аргумент], если вы хотите, чтобы параметр переменной был внедрен.Также измените имя встроенной переменной, так как в данный момент оно выглядит так, как будто значение словаря передается только из строкового значения:

*** Test Cases ***
Test Case
    When I post A POST Request
    Then verify the status code 200

*** Keywords ***
I Post A POST Request
    &{resp}=  create dictionary    status_code=200
    set suite variable  ${resp.status_code}

Verify The status Code ${expected_response_code}
    ${actual_response_code} =  Get Variable Value  ${resp.status_code}
    should be equal as strings  ${expected_response_code}  ${actual_response_code}

Также рассмотрите возможность использования «Set Test Variable», чтобы уменьшить область действия переменной илиВы можете оказать нежелательное влияние на другие тесты в дальнейшем (если только вам это не нужно на уровне комплекта).

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

Мне кажется, что суть этой проблемы в интервале.Ниже приведено основное решение вашей проблемы.При использовании встроенных аргументов в имени ключевого слова не должно быть двойных пробелов, поскольку они имеют особое значение в RF.

*** Test Cases ***
Test Case
    When I post A POST Request
    Then verify the status code is 200

*** Keywords ***
I Post A POST Request
    Set Suite Variable    ${resp_code}    200

Verify the status code is ${status_code}
    Should Be Equal As Strings    ${resp_code}    ${status_code}
...