我正在尝试利用我设置的全局变量,将其作为参数传递给关键字,但由于某种原因它不起作用。这是代码:
*** Variables ***
${ENV} qa
${MOBILE} 0
${BROWSER} Chrome
${DELAY} 0
${VALID USER} username
${VALID PASSWORD} 123456
&{SERVER} qa=https://${PREFIX}.qa.myapp.com
... staging=https://${PREFIX}.staging.myapp.com
... prod=https://${PREFIX}.myapp.com
${LOGIN URL} ${SERVER.${ENV}}/
${WELCOME URL} ${SERVER.${ENV}}/Profile
*** Keywords ***
Begin Web Test
[Arguments] ${pf}
[Tags] Critical
Set Global Variable ${PREFIX} ${pf}
Open Browser ${LOGIN URL} ${BROWSER}
Run Keyword If ${MOBILE} == 1
... Set Window Size 50 800
... ELSE Maximize Browser Window
Set Selenium Speed ${DELAY}
Login Page Should Be Open
Input Text username ${VALID USER}
Input Text password ${VALID PASSWORD}
Click Button btn_login
Location Should Be ${WELCOME URL}
Page Should Contain Update Profile
当我运行时,我收到一个错误:
[ ERROR ] Error in file '/path/to/Common.robot': Setting variable '&{SERVER}' failed: Variable '${PREFIX}' not found.
有人可以解释为什么这不起作用吗?
答案 0 :(得分:2)
*** Variables ***
部分中的变量是静态的,仅在第一次测试开始之前设置一次。更改${PREFIX}
的值时,您无法期望变量自动更新。
一种解决方案是将变量的设置移动到您可以在定义全局变量之后调用的关键字,或者传递${PREFIX}
的值。