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