Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

RobotFramework: как задать переменную в теле run keyword if?

robot-framework
python
testng
Теги: #<Tag:0x00007f7b645b48c0> #<Tag:0x00007f7b645b4780> #<Tag:0x00007f7b645b4618>

(Natalya Berezina) #1

Здравствуйте.
Проблема в следующем: мне нужно определить переменную в зависимости от условия.
Имеется такой код:
:FOR ${index} IN RANGE 0 ${NumOfMetrics}
\ ${name_recv} = convert to string ${resp.json()[’${MetricType}’][${index}][‘name’]}
\ ${nodesCount_recv} = convert to string ${resp.json()[’${MetricType}’][${index}][‘nodesCount’]}
\ Log name_recv is ${name_recv} nodesCount_recv is ${nodesCount_recv} score is ${score} ${resp.json()[’${MetricType}’][${index}][‘score’]} console=yes
\ ${score_recv} = set variable if ‘${score}’!=‘none’ ${resp.json()[’${MetricType}’][${index}][‘score’]}
\ run keyword if ‘${score}’==‘none’ run keyword if ‘${name_recv}’ == ‘${Name}’ and ‘${nodesCount_recv}’ == ‘${NodesCount}’ return from keyword
\ … ELSE
\ … ${score_recv} = convert to integer ${score_recv}
\ … run keyword if ‘${name_recv}’ == ‘${Name}’ and ‘${nodesCount_recv}’ == ‘${NodesCount}’ and ‘${score_recv}’ == ‘${score}’ return from keyword
В результате я получаю ошибку
No keyword with name ‘5.0 =’ found.
Если присваивание перенести из инструкции run keyword if то все работает, правда логически это не верно.
была ли у кого-нибудь такая проблема?


(Bolatbek) #2

А у меня встречный вопрос: а вообще удобно писать тесты на этом фрейморке? он радует вас?


(Natalya Berezina) #3

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


(Lev Yarushin) #4

А можно поинтересоваться, для чего такая сложная логика вам необходима?


(Natalya Berezina) #5

А почему нет?