变量文件不支持中文变量名,中文变量名引用时明明有确报错说没找到
第一种:通过特殊函数获取变量
变量文件如下test.py,这种用于切换不同环境很方便
# -*- coding: utf-8 -*-
# sys.setdefaultencoding('utf8') python2中才需要此行
def get_variables(env = "test"):
if env == 'test':
# test environment
variables = {
"phone": "1833",
"default_host": "http://192.1611:8086",
"databaseurl": ["192.1.11", 3306, "root", "pa117!"],
"UISdatabaseurl": ["192.16.14", 3306]
}
elif env == 'pro':
# product environment
variables = {
"phone": "1591",
"default_host": "http://pani.sv.com:886",
"databaseurl": ["192.12.13", 8066, "root", "12456"],
"UISdatabaseurl": ["192.1.6.14", 3306]
}
else:
# back environment
variables = {
# urlConfig
"mainurl": "http:",
"phone": "1828833",
"databaseurl": ["192.13", 8066, "root", "12456"],
# dbConfig
"db_trade": "",
"db_trade_pw": ""
}
normal_vars = {
"familyphone": ["1537591", "18281333", "153617", "153787", "18215704", "1234910"],
"videocode": "a8ca72b6-56c5-49e7-a81e-a63d467fcc17",
"liveid": "d418a2d8f20f42c0ae585c55b38c66cb"
} # 共用变量
allvar1 = dict(list(variables.items()) + list(normal_vars.items()))
# variables['normal_vars'] = normal_vars
return allvar1
如下引用,并带上参数${env}
在运行用例前带上参数值,命令行形式执行也一样的参数,下面表示选择的pro分支中的参数
test.py中最后三行如上面这样写引用normal_vars中的变量时直接引用就行,如${liveid}就行;
如果改成下面这样
# allvar1 = dict(list(variables.items()) + list(normal_vars.items()))
variables['normal_vars'] = normal_vars
return variables
此时引用normal_vars中的变量需要${normal_vars[“liveid”]}
第二种:直接创建变量
下面这种直接导入文件后引用变量就行,不需要在执行时加命令
# Can be used in the test data like ${MyObject()} or ${MyObject(1)}
class MyObject:
def __init__(self, index=''):
self.index = index
def __str__(self):
return '<MyObject%s>' % self.index
BYTE_STRING = 'Hello, world!'
UNICODE_STRING = (u'Hyv\u00E4\u00E4 y\u00F6t\u00E4. '
u'\u0421\u043F\u0430\u0441\u0438\u0431\u043E!')
CONTROL_CHAR = '\x01'
LIST = ['One', -2, False]
EMPTY_LIST = []
LIST_WITH_NONE = [None]
LIST_WITH_OBJECTS = [MyObject(1), MyObject(2)]
NESTED_LIST = [[True, False], [[1, None, MyObject(), {}]]]
LIST_WITH_INTEGERS = [3, -5]
DICT = {'one': 1, 'spam': 'eggs'}
EMPTY_DICT = {}
DICT_WITH_NON_STRING_KEYS = {1: 2, None: True}
DICT_WITH_NONE = {'As value': None, None: 'As key'}
DICT_WITH_OBJECTS = {'As value': MyObject(1), MyObject(2): 'As key'}
NESTED_DICT = {1: {None: False},
2: {'A': {'n': None},
'B': {'o': MyObject(), 'e': {}}}}
REPLACEMENT_CHARACTER = u'\uFFFD'
第三种:YAML格式的变量文件
变量文件还可以使用 YAML 文件. YAML是一种数据序列化的标记语言, 拥有简单的语法和友好的可读性. 下面的例子展示了一个简单的YAML文件:
string: Hello, world!
integer: 42
list:
- one
- two
dict:
one: yksi
two: kaksi
with spaces: kolme
注解:
在Robot Framework中使用YAML文件要求安装 PyYAML 模块. 如果已经有了 pip_, 则使用下面的命令即可安装 pip install pyyaml.
Robot Framework从2.9版本开始支持YAML. 从2.9.2版本开始, 独立的JAR包安装 已经默认包含了PyYAML.