RobotFramework关键字之List Should Contain Sub List
List Should Contain Sub List 是 Robot Framework 中 Collections 标准库提供的一个断言关键字,用于验证一个列表(主列表)是否包含另一个列表(子列表)中的所有元素。它检查的是子列表的每个元素是否都存在于主列表中,但并不要求元素的顺序一致或连续出现。
关键参数与用法
在编写测试用例时,你需要至少提供两个必要参数:
基本语法如下:
List Should Contain Sub List ${主列表变量} ${子列表变量} # 可选的自定义错误信息
操作示例与相关关键字
下面是一个简单的使用示例,帮助你理解它的行为:
*** Settings ***
Library Collections
*** Test Cases ***
示例:检查列表包含关系
@{所有水果} Create List Apple Banana Orange Grape
@{喜欢的水果} Create List Banana Grape
# 断言:所有"喜欢的水果"都存在于"所有水果"列表中
List Should Contain Sub List ${所有水果} ${喜欢的水果}
为了让你更好地在上下文使用这个关键字,下面表格列出了 Collections 库中其他几个常用的列表断言关键字,你可以对比它们的用途
特别注意:关于空字符串的边界情况
需要特别注意的是,根据搜索结果,List Should Contain Sub List 关键字在处理子列表中包含空字符串时,存在一个边界问题。
问题现象:当子列表中包含空字符串,且主列表也包含空字符串时,即使主列表缺少子列表里的其他有效元素,断言也可能不会失败。
原因:这通常与关键字内部的实现逻辑,特别是差异信息格式化方式有关。
建议:在使用此关键字时,如果您的测试数据可能涉及空字符串,需要特别留意这个边界情况。对于关键的业务断言,可以考虑结合其他验证方法,或者确保在测试前对数据进行清理。
核心要点总结
总而言之,List Should Contain Sub Sub List 是一个用于检查列表间包含关系的实用断言。当你的测试逻辑只关心某些关键元素是否存在于一个更大的集合中,而不在乎它们的顺序时,这个关键字就非常有用。
要使用它,别忘了在测试套件的设置部分通过 Library Collections 来导入 Collections 库。
实战
@{default_list} Create List 10066 41266 70066 70077 94288
@{table_data}= Create List
${cell_data}= Get Table Cell xpath=//*[@id="mhg_table"]//*[@class="el-table__body-wrapper"]//table 2 3
${row_count}= Get Element Count xpath=//*[@id="mhg_table"]//*[@class="el-table__body-wrapper"]//table/tbody/tr
${col_count}= Get Element Count xpath=//*[@id="mhg_table"]//*[@class="el-table__body-wrapper"]//table/tbody/tr[1]/td
FOR ${row} IN RANGE 1 ${row_count}+1
${cell_data}= Get Table Cell xpath=//*[@id="seplatConfig_table"]//*[@class="el-table__body-wrapper"]//table ${row} 1
Append To List ${table_data} ${cell_data}
END
Log ${table_data}
List Should Contain Sub List ${table_data} ${default_list}