Аргументы в случае, если заявления игнорируются в 1/2 раза - PullRequest
0 голосов
/ 29 ноября 2018
*** variables ***
${x}    0
*** Test Cases ***
Test1
    run keyword if   ${x} == 1    run keywords
    ...    print    hi
    ...    ELSE
    ...    print    hi
Test2
    run keyword if   ${x} == 0    run keywords
    ...    print    hi
    ...    ELSE
    ...    print    hi    
*** keywords ***
print
   [arguments]   ${x}
   log to console     ${x}

Вывод:

Test1                                                                 hi
Test1                                                                 | PASS |
------------------------------------------------------------------------------
Test2                                                                 | FAIL |
Keyword 'print' expected 1 argument, got 0.
------------------------------------------------------------------------------

Что здесь происходит?Аргументы на второй печатной работе, но игнорируются на первой.

Ответы [ 2 ]

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

Проблема возникает из-за того, что вы ожидаете, что hi будет передан в качестве аргумента print в конструкции run keywords, но робот так не воспринимает это, hi - это просто еще одно ключевое слово,run.

В Run Keywords документации есть параграф о том, как использовать ключевые слова с аргументами в нем - вы должны связать ключевые слова с помощью AND:

... ключевые слова также можно запускать с аргументами, используя верхний регистр AND в качестве разделителя между ключевыми словами.Ключевые слова выполняются таким образом, что первый аргумент является первым ключевым словом, а исходящие аргументы - до тех пор, пока первые AND не станут аргументами для него.Первый аргумент после первого AND - это второе ключевое слово, а исходящие аргументы до следующего AND - его аргументы.И т. Д.

В вашем случае:

run keyword if   ${x} == 1    run keywords
...    print    hi    AND     No Operation
...    ELSE
...    print    hi

, теперь изменит вызов на «запустить ключевое слово print с аргументом« привет », а затем выполнитьключевое слово No Operation "(которое буквально ничего не делает, пригодится в подобных ситуациях).

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

Разница в том, что в одном случае вы вызываете run keywords (с аргументами), а в другом случае вы запускаете print (с аргументами).

Мы можем переформатировать ваш код впокажите, как на это смотрит робот:

run keyword if   ${x} == 1
...    run keywords    print  hi
...    ELSE
...    print    hi

Когда выражение ложно, вы проваливаетесь и запускаете print hi, и все работает.

Когда случай истинен, робот запускаетсяrun keywords print hi.run keywords обрабатывает каждый из своих аргументов как отдельное ключевое слово для запуска, поэтому он пытается запустить print, а затем пытается hi.Поскольку вы не указываете аргумент для печати, выдается ошибка.

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