如何忽略列表中的None值?使用Remove values from list无效该怎么解决?
问题根因说明
Remove values from list失效原因:该关键字不能用/分隔多个待移除值,你传入的None/${empty}/null会被识别为单个完整字符串,而非三个独立的待过滤值;同时Robot Framework中None、${EMPTY}、JSON反序列化后的null是不同类型的空值,需要先确认列表中存储的空值类型再匹配移除。- JsonPath报错原因:你使用的过滤语法不符合当前依赖的JsonPath解析库规范,缺少条件包裹括号,且判断空值的表达式写法错误。
可用解决方法
方法1:修正Remove values from list的用法
如果列表中存储的空值是Python原生None,按如下方式调用:
# 循环移除所有None :FOR ${item} IN @{list} \ Run Keyword If '${item}' == '${None}' Remove Values From List ${list} ${item}
如果同时存在空字符串${EMPTY},新增对应判断逻辑即可。
方法2:直接用Evaluate过滤列表(效率更高)
直接调用Python列表推导式过滤,不需要循环调用关键字:
# 仅过滤所有None值 ${filtered_list}= Evaluate [item for item in $list if item is not None] # 同时过滤None和空字符串的写法 ${filtered_list}= Evaluate [item for item in $list if item not in (None, "")]
方法3:修正JsonPath语法直接过滤空值
使用符合jsonpath-ng规范的过滤表达式,提取时直接跳过空值无需二次处理:
${TARGET_TEXT}= Get Json Path ${RESPONSE} $.pipelines..filter.children..targetText[?(@ != null)]
内容的提问来源于stack exchange,提问作者Lily
相关产品推荐
相关产品推荐

