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

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

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

基本語法如下:

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

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

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

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