Robotframework:如果作为变量传递,则无法为Run关键字的变量设置套件变量

Robotframework:如果作为变量传递,则无法为Run关键字的变量设置套件变量,robotframework,Robotframework,我尝试为不同的情况生成唯一名称,并使用最少的关键字将该唯一名称设置为套件变量,但无法做到这一点, 有人能帮我弄到这个吗,这是我的密码 *** 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 Objec

我尝试为不同的情况生成唯一名称,并使用最少的关键字将该唯一名称设置为套件变量,但无法做到这一点, 有人能帮我弄到这个吗,这是我的密码

*** 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}”


Run If语句允许执行多个关键字,但是,基于在同一Run If上下文中设置的值设置变量才是真正的问题。我的建议是将ID的生成和重用分为两个不同的语句。

如果运行If语句允许执行多个关键字,但是,如果上下文是真正的问题,则基于在同一运行If中设置的值设置变量。我的建议是将ID的生成和重用分为两种不同的语句。

考虑以下代码块:

${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
作为这些关键字之一调用,但它是在
运行关键字(如果
完成)之前调用的,因此是在创建
${namePL}
之前调用的。

考虑这段代码:

${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
作为这些关键字之一调用,但它是在
运行关键字(如果
完成)之前调用的,因此是在创建
${namePL}
之前调用的。

最后,我可以在单个关键字中找到解决方案。下面是简单的代码

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

多亏了你所有的意见。

最后,我可以在一个关键字中找到一个解决方案。下面是简单的代码

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