Назначить переменную в рамках ключевого слова "Run Keywords" возможно? - PullRequest
0 голосов
/ 14 декабря 2018

следующий код создает некоторую проблему:

API Setup
[Arguments]                           ${url}                           ${username}    ${password}    ${run}=True    ${fail}=False
Run Keyword If                        ${run}
...  Run Keywords     
     ...  ${passed}=                  Run Keyword And Return Status    Setup          ${url}         ${username}    ${password}
     ...  AND  Log To Console         ${passed}
     ...  AND  Should Not Be Equal    ${fail}                          ${passed}

Когда я пытаюсь выполнить это, мой RF говорит: Variable '${passed}' not found.

RED IDE также говорит

Multiple markers at this line:
  • Variable 'passed' is used, but not defined
  • Keyword name '${passed}=' contains variables. RED is unable to validate 
    arguments given to this keyword

Разрешены ли ключевые слова "Ключевые слова для выполнения" каких-либо назначений значений переменным, и если да, то есть ли способ "наилучшей практики", чтобы делать то, что я хочу сделать?

Спасибо!

Ответы [ 2 ]

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

Run Keywords делает не разрешения назначений, это правда.Это происходит от парсера - цель ключевого слова - запускать другие;он подходит к строке с присваиванием (${passed}= Run...), пытается заменить переменную «передано» ее значением, чтобы он мог выполнить ее, но на этом этапе переменная все еще не определена - и это не удается.

Похоже, что вы хотите сделать, это запустить определенное ключевое слово (Setup) только в том случае, если условие истинно, и только если условие истинно, тогда зарегистрируйте его результат, и подтвердите его (результат) желаемое.

Этого можно добиться, разбив блок на две части.Ключевое слово Run Keyword If возвращает значение встроенного ключевого слова, поэтому это будет работать:

${passed}=    Run Keyword If    ${run}    Run Keyword And Return Status    Setup          ${url}         ${username}    ${password}
                             ...    ELSE    Set Variable    ${False}

Если ${run} == True будет выполнено ключевое слово Setup, а {passed} будет содержать значение True / Falseзначение выполнения прошло.Если ${run} != True мы устанавливаем ${passed} в False, просто у него нет значения None (его значение не очень важно в этом случае, но выполнение этого дает согласованность типов данных, которые у него есть).

И теперь два других ключевых слова могут быть в блоке if - выполнять свою работу только тогда, когда ${run} == True:

Run Keyword If    ${run}   Run Keywords     Log To Console         ${passed}
 ...  AND  Should Not Be Equal    ${fail}    ${passed}
0 голосов
/ 15 декабря 2018

Это правда, что Run Keywords не позволяет присваивать переменные в

. Создайте ключевое слово, которое содержит все внутри Run Keywords, и просто вызовите его вместо этого.

Например,

*** Test Cases ***
API Setup
[Arguments]                           ${url}                           ${username}    ${password}    ${run}=True    ${fail}=False
Run Keyword If                        ${run}                           Keyword A

*** Keywords ***
Keyword A
    # put everything you need here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...