【问题标题】:Robot framework: variable function with dictionary arguments机器人框架:带有字典参数的变量函数
【发布时间】:2014-10-01 17:52:50
【问题描述】:

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

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

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

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

INFO : ${key_dict} = {'elem2': 'val2', 'elem3': 'val3', 'elem1': 'val1'} FAIL : 无效的变量名 '${get_elem1_or_default_2({'elem2': 'val2', 'elem3': 'val3', 'elem1': 'val1'})}'。

可以这样做还是有什么问题?有没有别的办法?

谢谢!

【问题讨论】:

    标签: variables robotframework


    【解决方案1】:

    您的“变量函数”只是应该被称为关键字而不是变量的函数。因此,您可以保持 global.py 原样,但以这种方式调用您的函数:

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

    【讨论】:

    • 你好。谢谢你的评论。但是有一些问题。我将变量文件加载为 *** Settings *** Variables Global.py 当我尝试使用“变量函数”作为关键字时,我得到一个错误:找不到关键字。
    • 是的,您必须将其加载为库(全局库)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2017-05-18
    • 2019-03-17
    • 2020-12-07
    • 2016-02-02
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多