如何使用Robot Framework移除一个列表中存在于另一列表的元素
Robot Framework 获取两个列表的非共有元素
原代码问题说明
你的代码存在两处错误:
- Robot Framework的列表变量定义语法错误,不能直接用
$list1= ['test1','test2','test3','test4']这种方式创建列表; - 框架不支持直接通过
-运算符对列表做差集运算。
正确实现方法
方法1:借助Python集合运算(简洁高效)
利用Python集合的对称差集特性,快速获取两个列表中所有非共有元素,再转回列表格式:
# 定义两个列表 @{list1}= Create List test1 test2 test3 test4 @{list2}= Create List test1 test2 test3 test4 test5 # 转为集合计算对称差集(包含两边独有的元素) ${set1}= Evaluate set(${list1}) ${set2}= Evaluate set(${list2}) ${diff_set}= Evaluate ${set1} ^ ${set2} # 转回列表并打印 @{difference}= Create List @{diff_set} Log To Console ${difference}
如果只需要获取list2中独有的元素,把对称差集的代码改成${set2} - ${set1}即可。
方法2:用Robot Framework关键字遍历判断(纯框架语法)
通过遍历列表,逐个判断元素是否存在于另一个列表,收集非共有元素:
# 定义两个列表 @{list1}= Create List test1 test2 test3 test4 @{list2}= Create List test1 test2 test3 test4 test5 # 初始化空列表存储结果 @{difference}= Create List # 遍历list1,收集不在list2中的元素 :FOR ${item} IN @{list1} \ Run Keyword If '${item}' not in ${list2} Append To List ${difference} ${item} # 遍历list2,收集不在list1中的元素 :FOR ${item} IN @{list2} \ Run Keyword If '${item}' not in ${list1} Append To List ${difference} ${item} # 打印结果 Log To Console ${difference}
内容的提问来源于stack exchange,提问作者TestingK
相关产品推荐
相关产品推荐

