机器人框架:带字典参数的变量函数

时间:2014-09-30 16:36:14

标签: variables robotframework

我有一个变量文件,它定义了一个变量,比如字典和变量函数中的字典。

global.py

DEFAULT_VAL=111
TEST_VAR={'key1':{'elem1':'val1', 'elem2':'val2', 'elem3':'val3'}, 'key2':{'elem2':'val2', 'elem3':'val3'}}

def get_elem1_or_default_1(key):
   return   TEST_VAR[key]['elem1'] if 'elem1' in TEST_VAR[key] else DEFAULT_VAL

def get_elem1_or_default_2(key_dict):
   return   key_dict['elem1'] if 'elem1' in key_dict else DEFAULT_VAL

从机器人我可以调用变量函数' get_elem1_or_default_1'接受字符串作为键,如下所示:

*** Settings ***
Variables           Global.py

${var}    Set variable    ${get_elem1_or_default_1('key2')}
INFO : ${var} = 111

但是当我尝试调用另一个函数时,get_elem1_or_default_2'接受dict作为参数我得到一个错误

${key_dict}   Evaluate   ${TEST_VAR}['key1']
${var}    Set variable    ${get_elem1_or_default_2(${key_dict})}

信息:$ {key_dict} = {' elem2':' val2',' elem3':' val3',&#39 ; elem1':' val1'} 失败:变量名称无效' $ {get_elem1_or_default_2({' elem2':' val2',' elem3':' val3', ' elem1':' val1'})}'。

是否可以这样做或出现问题?可能还有另一种方式吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的“变量函数”只是应该作为关键字而不是变量调用的函数。所以你可以保持你的global.py不变,但是这样调用你的函数:

*** test cases ***
mytest
  ${key_dict} =   Evaluate  ${TEST_VAR}['key1']
  ${var} =  get_elem1_or_default_2  ${key_dict}