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}