2017-02-14 70 views
2

有没有适当的方式来循环在RF字典? 我用Python的方式,但没有成功for循环在字典机器人框架

:FOR ${key} ${value} IN &{dict} 

输出: 的FOR循环值应该是多个它的变量数。有2个变量,但1个值。

同样,当我指向字典作为标量变量。尽管我在文档中找不到示例。 有没有人解决这个问题?

P.S.

我知道解决方法,你使用kw。获取字典密钥并获取字典值,然后,更新您使用设置为字典$ {key} $ {new_value}的值,但这似乎是人为的不友好并且使用了几次循环迭代而不是一次。

回答

5
Loop Through Dict 
    &{mydict} Create Dictionary a=1 b=2 
    :FOR ${key} IN @{mydict.keys()} 
    \ Log ${mydict["${key}"]} 

Loop Through Dict And Multiplicate Values 
    &{mydict} Create Dictionary a=1 b=2 
    :FOR ${key} IN @{mydict.keys()} 
    \ ${new_value} Evaluate ${mydict["${key}"]}*2 
    \ Set To Dictionary ${mydict} ${key}=${new_value} 
    Log ${mydict} 
+0

这是我所提到的解决方法。在你的例子中,它并没有那么糟糕,但是试着例如乘以数值并更新...在Python仍然是一个for循环,在这里...可怕的。这甚至可能会作为改进转发给RF团队。 – user2678074

+1

嗯,那我就不明白了。您可以通过':FOR $ {key} IN @ {dict.keys()}'或通过字典值列表循环查找字典键列表:'FOR $ {value} IN @ {dict.values()}'没有任何其他关键字。 –

+0

啊,现在你把评论扩展了之后,就更加清楚了。是的,在RF中做这样的循环是不愉快的,我肯定会在python中写出尽可能多的KW。 –

1

另一个解决方法是在for循环中使用关键字“Get From Dictionary”。

Loop through and Log key and value in dict 
    [Documentation] Loops through each key and stores the key value 
    ...    in a variable that can be used during the for 
    ...    loop, as if you were iterating through python 
    ...    with "for key, value in dict.iteritems()". 
    &{mydict} Create Dictionary a=1 b=2 
    :FOR ${key} IN @{mydict.keys()} 
    \ ${value}= Get From Dictionary ${mydict} ${key} 
    \ Log ${key}, ${value} 

参考:http://robotframework.org/robotframework/latest/libraries/Collections.html#Get%20From%20Dictionary