RobotFramework關(guān)鍵字之List Should Contain Sub List

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ù):

  • list1:主列表,即被檢查的較大列表。
  • list2:子列表,即需要確認其所有元素是否都包含在 list1 中的較小列表。
    此外,還有一個可選參數(shù):
  • msg:當斷言失敗時,可以自定義顯示的錯誤信息。

基本語法如下:

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)鍵字 主要作用 List Should Contain Sub List 的區(qū)別
Lists Should Be Equal 斷言兩個列表完全相等,包括元素的順序數(shù)量。 檢查的是兩個列表是否完全一致,更為嚴格。
List Should Contain Value 斷言列表中包含某個特定的元素。 檢查單個元素,而非一個子列表。
Should Contain (BuiltIn庫) 斷言一個容器(如列表、字符串)包含某個元素 功能更通用,可用于列表、字符串等,但也是檢查單個元素。

特別注意:關(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}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容