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}
谢谢你的意见