Robotframework 变量文件中的变量

Robotframework 变量文件中的变量,robotframework,Robotframework,我试图使用变量phyton文件中的变量。 我想我正在做用户手册中描述的所有事情,但是变量仍然不可用 这是变量文件 TEST_VAR = 'Michiel' def get_variables(environment = 'UAT'): if environment.upper() == 'INT': ENV = {"NAME": "Bol.com INT", "BROWSER": "safari", "URL

我试图使用变量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
这两个文件在文件夹结构中处于同一级别。 但是文件中的变量对我不可用。甚至不是正态变量

有人能告诉我我做错了什么吗? 一定是我忘了的小东西。
非常感谢。

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

从(增加强调)开始:

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

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

如果要设置名为
${ENV}
的变量,则必须将其作为返回字典的一部分

# Variables.py
from robot.utils import DotDict

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

如果这是您的实际代码,您将得到错误,因为缩进是错误的。很抱歉混淆了这个问题。我的帖子中的标识是错误的,但代码中没有。我在帖子中更正了。DotDict导入+1。。。有些人多年来可能已经编写了自己的代码