Уменьшить или увеличить переменную в каркасе робота

Я просто хочу уменьшить переменную N_groups в последней строке. Это мой файл робота:

Preconditions - Delete Groups But Not First
    ${N_groups}    Setup Groups Count Groups
    Log to console    N_groups: ${N_groups}
    : FOR    ${INDEX}    IN RANGE    1    20
    \    Run Keyword If    '${N_groups}' == '1'    Exit For Loop
    \    Setup Groups Delete Group    ${group}
    \    ${N_groups}=    ${N_groups}-1

Я получаю сообщение об ошибке:

No keyword with name '${N_groups}-1' found.

Что я здесь делаю неправильно?


person kame    schedule 28.01.2016    source источник


Ответы (3)


Попробуйте поместить его в имя переменной. то есть

${N_groups-1}
person shicky    schedule 28.01.2016
comment
это не интуитивно - person kame; 28.01.2016
comment
да, я помню, как несколько месяцев назад столкнулся с точно таким же камнем преткновения, исходя из разработки, это просто кажется неправильным, как будто я использую совершенно другую переменную, а не меняю значение переменной. Но я думаю, синтаксис есть синтаксис - person shicky; 28.01.2016
comment
@kame: это не интуитивно понятно, но это задокументированная функция: robotframework.org /robotframework/последняя/ - person Bryan Oakley; 28.01.2016

Если переменная уже является числом, вы можете использовать:

${N_groups}= ${N_groups-1}

Для этого вам нужно привести его к числу (иначе вы получите сообщение об ошибке failed: TypeError: coercing to Unicode: need string or buffer, int found), например.

*** Variables *** ${N_groups}= ${0} # ${} notation coerces value to a number

В качестве альтернативы вы можете использовать Evaluate следующим образом, который работает независимо от того, была ли ${N_groups} приведена к числу или нет:

${N_groups}= Evaluate ${N_groups} - 1

person qbert220    schedule 07.06.2017

Попробуй это:

${decrement_counter}=  set variable   1

-- внутри цикла

${N_groups}=   Evaluate    ${N_groups} - ${decrement_counter}

Примечание - только один пробел до и после знака вычитания.

person Ashok Kakade    schedule 09.02.2021