интересно, можно ли использовать цикл FOR при форматировании строки
Нет, в смысле выполнения цикла и добавления значений каждой итерации к цели Catenate
,Что произойдет, так это то, что в конечном итоге в строке будет ": FOR", "@ {role_id_list}" и т. Д.
Но добиться того, чего вы хотите, не так уж и сложно - просто создайте цикл, который создаст промежуточную строку, и добавьте , что , в Catenate
.Например:
${roles array}= Set Variable ${EMPTY} # initialize an empty string variable
:FOR ${roleId} ${catID} ${subcatID} IN ZIP ${role_id_list} ${category_id_list} ${subCat_id_list}
/ ${roles array}= Set Variable ${roles array}{ # you append the target string to the end of the current value of the variable
/ ${roles array}= Set Variable ${roles array}"role_id": ${roleId},
/ ${roles array}= Set Variable ${roles array}"categories": [{ "category_id": "${catID}" }],
/ ${roles array}= Set Variable ${roles array}"subcats":[{ "sub_category_id": "${subcatID}" }]
/ ${roles array}= Set Variable ${roles array}},
# and now use it inside the Catenate
${data}= Catenate
... {
... "email_address": "${NewUserEmailID}",
... "user_name": "${UserName}",
... "roles": [ ${roles array}
... ],
... "line_manager": "${LineManageID}",
... "guest_user": ${GuestUser},
... "guest_invitation_text": "Invitation Text",
... "guest_redirect_url": "http://www.example.com/guest",
... "organization_id": 1
... }
Как вы заметили, синтаксис для перебора более чем одного списка несколько отличается - нужно использовать IN ZIP
(который исходит из / isаналог функции zip()
Python).