动态使用机器人框架中的全局变量

时间:2018-01-03 14:50:40

标签: robotframework

我正在尝试利用我设置的全局变量,将其作为参数传递给关键字,但由于某种原因它不起作用。这是代码:

*** 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.

有人可以解释为什么这不起作用吗?

1 个答案:

答案 0 :(得分:2)

*** Variables ***部分中的变量是静态的,仅在第一次测试开始之前设置一次。更改${PREFIX}的值时,您无法期望变量自动更新。

一种解决方案是将变量的设置移动到您可以在定义全局变量之后调用的关键字,或者传递${PREFIX}的值。