RobotFramework關(guān)鍵字之List Should Contain Sub List
List Should Contain Sub List 是 Robot Framework 中 Collections 標準庫提供的一個斷言關(guān)鍵字,用于驗證一個列表(主列表)是否包含另一個列表(子列表)中的所有元素。它檢查的是子列表的每個元素是否都存在于主列表中,但并不要求元素的順序一致或連續(xù)出現(xiàn)。
關(guān)鍵參數(shù)與用法
在編寫測試用例時,你需要至少提供兩個必要參數(shù):
基本語法如下:
List Should Contain Sub List ${主列表變量} ${子列表變量} # 可選的自定義錯誤信息
操作示例與相關(guān)關(guān)鍵字
下面是一個簡單的使用示例,幫助你理解它的行為:
*** Settings ***
Library Collections
*** Test Cases ***
示例:檢查列表包含關(guān)系
@{所有水果} Create List Apple Banana Orange Grape
@{喜歡的水果} Create List Banana Grape
# 斷言:所有"喜歡的水果"都存在于"所有水果"列表中
List Should Contain Sub List ${所有水果} ${喜歡的水果}
為了讓你更好地在上下文使用這個關(guān)鍵字,下面表格列出了 Collections 庫中其他幾個常用的列表斷言關(guān)鍵字,你可以對比它們的用途
特別注意:關(guān)于空字符串的邊界情況
需要特別注意的是,根據(jù)搜索結(jié)果,List Should Contain Sub List 關(guān)鍵字在處理子列表中包含空字符串時,存在一個邊界問題。
問題現(xiàn)象:當子列表中包含空字符串,且主列表也包含空字符串時,即使主列表缺少子列表里的其他有效元素,斷言也可能不會失敗。
原因:這通常與關(guān)鍵字內(nèi)部的實現(xiàn)邏輯,特別是差異信息格式化方式有關(guān)。
建議:在使用此關(guān)鍵字時,如果您的測試數(shù)據(jù)可能涉及空字符串,需要特別留意這個邊界情況。對于關(guān)鍵的業(yè)務(wù)斷言,可以考慮結(jié)合其他驗證方法,或者確保在測試前對數(shù)據(jù)進行清理。
核心要點總結(jié)
總而言之,List Should Contain Sub Sub List 是一個用于檢查列表間包含關(guān)系的實用斷言。當你的測試邏輯只關(guān)心某些關(guān)鍵元素是否存在于一個更大的集合中,而不在乎它們的順序時,這個關(guān)鍵字就非常有用。
要使用它,別忘了在測試套件的設(shè)置部分通過 Library Collections 來導(dǎo)入 Collections 庫。
實戰(zhàn)
@{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}