变量文件中的变量

时间:2017-08-23 10:07:52

标签: robotframework

我正在尝试使用变量phyton文件中的变量。 我认为我正在按照用户手册中的描述进行操作,但变量仍然无法使用。

这是变量文件

TEST_VAR = 'Michiel'

def get_variables(environment = 'UAT'):

    if environment.upper() == 'INT':
        ENV = {"NAME": "Bol.com INT",
               "BROWSER": "safari",
               "URL": "www.bol.com"}
    else:
        ENV = {"NAME": "Bol.com UAT",
               "BROWSER": "firefox",
               "URL": "www.bol.com"}

    return ENV

我这样导入:

*** Settings ***
Variables  Variables.py  ${ENVIRONMENT}
Library  Selenium2Library
Resource  ../PO/MainPage.robot
Resource  ../PO/LoginPage.robot

*** Variables *** 
${ENVIRONMENT}

*** Keywords ***
Initialize suite
    log  ${TEST_VAR}
    log  start testing on ${ENV.NAME}

Start application
    open browser  ${ENV.URL}  ${ENV.BROWSER}

Stop application
    close browser

两个文件在文件夹结构中处于同一级别。 然而,我无法获得文件中的变量。甚至不是正常的变量。

有人能告诉我这里做错了什么吗? 必须是我忘记的小事。 非常感谢。

1 个答案:

答案 0 :(得分:2)

当您使用这样的变量文件时,您最终不会得到名为${ENV}的变量。相反,您返回的字典中的每个键都变为变量。

robot framework user guide(强调添加):

  

获取变量的另一种方法是在变量文件中使用特殊的get_variables函数(也可以使用camelCase语法getVariables)。如果存在这样的函数,Robot Framework会调用它并期望将变量作为Python字典或Java Map接收,其中变量名称作为键,变量值作为值

在这种特定情况下,这意味着您最终会得到变量${NAME}${BROWSER}${URL}

如果要设置名为${ENV}的变量,则必须创建返回字典的那部分

# Variables.py
from robot.utils import DotDict

def get_variables(environment="UAT"):
    ...
    return {
        "ENV": DotDict(ENV)
    }