我正在尝试使用变量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
两个文件在文件夹结构中处于同一级别。 然而,我无法获得文件中的变量。甚至不是正常的变量。
有人能告诉我这里做错了什么吗? 必须是我忘记的小事。 非常感谢。
答案 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)
}