Robotframework: невозможно установить переменную Suite для переменных Run Keyword, если передается как переменная

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

*** Test Cases ***

TC100_Unique Variable Checking
Generate Unique Name for Objects-loop    Product Line
Generate Unique Name for Objects-loop    Models
Generate Unique Name for Objects-loop    Portfolio

*** Keywords ***    
Generate Unique Name for Objects-loop
[Arguments]    ${function}
Set Variable    ${function}
${namePL}=    Run Keyword If    '${function}'=='Product Line'    Run      Keywords    Generate Unique Name    PL-RFT-    ${CURDIR}\\fNameEdit.txt
...    Set Suite Variable    ${namePL}
${nameMOD}=    Run Keyword If    '${function}'=='Models'    Run Keywords    Generate Unique Name    MOD-RFT-    ${CURDIR}\\modNameEdit.txt
...    Set Suite Variable    ${nameMOD}
${namePF}    Run Keyword If    '${function}'=='Portfolio'    Run Keywords    Generate Unique Name    PF-RFT-    ${CURDIR}\\pfNameEdit.txt
...    Set Suite Variable    ${namePF}

Generate Unique Name
[Arguments]    ${suffix}    ${filepath}
${name}=    Get String Plus Number    ${suffix}    ${filepath}
Set Test Variable    ${name}
Write Unique Number    ${filepath}
[Return]    ${name}

Ошибка:

Переменная '${namePL}' не найдена.

3 ответа

Решение

Наконец, я мог найти решение в одном ключевом слове. Вот простой код.

 Run Keyword If    '${function}'=='Products'    Run Keywords    Generate  Unique Name    PL-RFT-    ${CURDIR}\\fNameEdit.txt    AND
...    Set Suite Variable    ${namePL}    ${name}

Спасибо всем вашим мнениям.

Рассмотрим этот блок кода:

${namePL}=    Run Keyword If    '${function}'=='Product Line'    Run      Keywords    Generate Unique Name    PL-RFT-    ${CURDIR}\\fNameEdit.txt
...    Set Suite Variable    ${namePL}

Это создаст переменную с именем ${namePL} после того, как другие ключевые слова уже запущены. Тем не менее, вы пытаетесь позвонить Set Suite Variable как одно из этих ключевых слов, но он вызывается раньше Run keyword if заканчивается и, таким образом, до ${namePL} был создан.

Оператор Run If допускает выполнение нескольких ключевых слов, однако установка переменных на основе значений, также установленных в том же контексте Run If, является настоящей проблемой. Мой совет - разделить генерацию идентификатора и повторное использование в двух разных утверждениях.

Другие вопросы по тегам