我正在尝试将字典设置为变量(因此我可以将其用作资源并从其他文件访问其值)并且有些东西让我发疯。
这是我的代码(仅用于测试目的):
*** Settings ***
Documentation Suite description
Library Collections
*** Variables ***
&{SOME DICT} key1=value1 key2=value2
*** Test Cases ***
Dict Test # why $ instead of &?
${RANDOM VAR}= Get From Dictionary ${SOME DICT} key1
Log ${RANDOM VAR} WARN
如果我运行它,我得到了预期的结果( [WARN] value1 )但IDE(PyCharm)抱怨 $ {SOME DICT} 变量是未定义,字典声明不会突出显示与变量或列表相同。
如果我将其更改为& {SOME DICT} ,IDE将不再抱怨,但测试失败并显示以下输出:
Dict Test | FAIL |
Keyword 'Collections.Get From Dictionary' got positional argument after named arguments.
令我感到困惑的是,为什么我必须使用$而不是&如果它是一本字典使它工作?有什么我做错了,它只是运气好吗?
感谢您提供任何建议或指导!
答案 0 :(得分:2)
了解"从词典中获取" libdoc,看起来像示例显示与您的工作片段相同:
Name: Get From Dictionary Source: Library (Collections) Arguments: [dictionary, key] Returns a value from the given ``dictionary`` based on the given ``key``. If the given ``key`` cannot be found from the ``dictionary``, this keyword fails. The given dictionary is never altered by this keyword. Example: | ${value} = | Get From Dictionary | ${D3} | b | => | ${value} = 2
关键字实施细节如下:
try:
return dictionary[key]
except KeyError:
raise RuntimeError("Dictionary does not contain key '%s'." % key)
确实,Robot发送dict内容的表示而不是dict name,因此可以返回key的值。 这与python中的直接调用相同:
a = {u'key1': u'value1', u'key2': u'value2'}
print(a['key1'])
最后,该KW的libdoc并不简单,但在这种情况下,你的机器人PyCharm插件无法正常工作。 在RED Robot Editor(基于Eclipse)中,正确的情况不会在编辑器中出现任何警告,错误的情况提供关于参数的错误标记(更好但仍然不清楚究竟是什么错误。责备简约的libdoc信息)。
PS。我是RED项目的领导要清楚。
答案 1 :(得分:0)
在机器人框架中使用键值变量的简单示例 将值设置为字典 从字典中获取值
&{initValues} 创建字典 key1=value1 key2=value2
设置为字典 ${initValues} key1=newvalue1
设置为字典 ${initValues} key2=newvalue2
设置为字典 ${initValues} key3=newvalue3
${value} 从字典中获取 ${intialValues} key1