如何在机器人框架中的两个不同列表中添加项目?

时间:2017-03-30 04:12:54

标签: robotframework

list1 = [1,2,3]

list2 = [4,5,6]

我想以这种方式对这些列表进行添加:1 + 4,2 + 5,3 + 6 ..依此类推。

任何帮助都会非常感激。

感谢。

2 个答案:

答案 0 :(得分:2)

在Robot Framework中,BuiltIn Library中的计算关键字选项不多。当然没有原生的,我们经常使用Evaluate来评估python表达式。在已经提到的Element-wise addition of 2 lists中进一步解释了这个python表达式。结合以下代码:

*** Test Cases ***
Map Lamda Calc
    ${list1}    Create List    ${1}    ${2}    ${3} 
    ${list2}    Create List    ${1}    ${2}    ${3}
    ${CalcList}    Evaluate    map(lambda x, y: x + y, $list1, $list2)
    Log To Console    \n${CalcList}

然后会产生以下控制台响应:

==============================================================================
Test                                                                          
==============================================================================
Test.calcLists                                                                
==============================================================================
Map Lamda Calc                                                        
[2, 4, 6]
| PASS |
------------------------------------------------------------------------------
Test.calcLists                                                        | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
============================================================================

在代码中,$ {1}构造用于确保存储的值确实是robot framework integer。否则提供一个字符串,然后执行连接。

答案 1 :(得分:0)

使用for in-zip构造的机器人框架本机解决方案 - 它会在两个列表中进行迭代,最长可达较小的列表:

${list a}=  Create List  1  5  3  8 
${list b}=  Create List  2  4  7
${result}=  Create List
:FOR  ${a}  ${b}    IN ZIP  ${list a}  ${list b}
\  ${sum}=  Evaluate  int($a) + int($b)
\  Append To List  ${result}  ${sum}

运行时,${result}的值为[3, 9, 10] - ${list b}只有3名成员。
在评估中,所有源列表成员都被转换为int - 因此,如果任何不是类似数字的对象,则case / keyword将在该步骤失败。