Robot Framework官方教程(五)使用測(cè)試庫(kù)

Robot Framework官方教程(一)入門(mén)
Robot Framework官方教程(二)測(cè)試數(shù)據(jù)語(yǔ)法
Robot Framework官方教程(三)創(chuàng)建測(cè)試用例
Robot Framework官方教程(四)創(chuàng)建測(cè)試套件
Robot Framework官方教程(五)使用測(cè)試庫(kù)
Robot Framework官方教程(六)變量
Robot Framework官方教程(七)創(chuàng)建用戶關(guān)鍵字
Robot Framework官方教程(八) 資源和變量文件
Robot Framework官方教程(九) 執(zhí)行測(cè)試用例
Robot Framework官方教程(十)擴(kuò)展RobotFramework框架

使用測(cè)試庫(kù)

測(cè)試庫(kù)包含那些最低級(jí)別的關(guān)鍵字,通常稱為 庫(kù)關(guān)鍵字,實(shí)際上與被測(cè)系統(tǒng)交互。所有測(cè)試用例總是使用某些庫(kù)中的關(guān)鍵字,通常是通過(guò)更高級(jí)別的用戶關(guān)鍵字。本節(jié)介紹如何使用測(cè)試庫(kù)以及如何使用它們提供的關(guān)鍵字。創(chuàng)建測(cè)試庫(kù)在單獨(dú)的部分中描述。

2.4.1使用測(cè)試庫(kù)

下面的小節(jié)給出了使用測(cè)試庫(kù)的說(shuō)明。

使用庫(kù)設(shè)置

通常使用“ 設(shè)置”表中的“ 庫(kù)”設(shè)置導(dǎo)入測(cè)試庫(kù),并在后續(xù)列中具有庫(kù)名稱。庫(kù)名稱區(qū)分大小寫(xiě)(它是實(shí)現(xiàn)庫(kù)的模塊或類的名稱,并且必須完全正確),但忽略其中的任何空格。使用模塊中的Python庫(kù)或包中的Java庫(kù),必須使用包括模塊或包名稱的全名。

在庫(kù)需要參數(shù)的情況下,它們列在庫(kù)名后面的列中。與關(guān)鍵字的參數(shù)類似,可以在測(cè)試庫(kù)導(dǎo)入中使用默認(rèn)值,可變數(shù)量的參數(shù)和命名參數(shù)??梢允褂米兞吭O(shè)置庫(kù)名稱和參數(shù)。

Setting Value Value Value
Library OperatingSystem
Library com.company.TestLib
Library MyLibrary arg1 arg2
Library ${LIBRARY}

可以在測(cè)試用例文件, 資源文件測(cè)試套件初始化文件中導(dǎo)入測(cè)試庫(kù)。在所有這些情況下,導(dǎo)入庫(kù)中的所有關(guān)鍵字都可在該文件中使用。對(duì)于資源文件,這些關(guān)鍵字也可以在使用它們的其他文件中使用。

使用Import Library關(guān)鍵字

采取測(cè)試庫(kù)投入使用另一種可能性是使用關(guān)鍵字導(dǎo)入庫(kù)從內(nèi)建庫(kù)。此關(guān)鍵字與庫(kù)設(shè)置類似地獲取庫(kù)名稱和可能的參數(shù)。導(dǎo)入庫(kù)中的關(guān)鍵字在測(cè)試套件中可用,其中使用了Import Library關(guān)鍵字。如果在測(cè)試執(zhí)行開(kāi)始時(shí)庫(kù)不可用并且只有其他一些關(guān)鍵字使其可用,則此方法很有用。

Test Case Action Argument Argument Argument
Example Do Something
Import Library MyLibrary arg1 arg2
KW From Mylibrary

庫(kù)搜索路徑

指定要導(dǎo)入的測(cè)試庫(kù)的最常用方法是使用其名稱,就像在本節(jié)的所有示例中一樣。在這些情況下,Robot Framework嘗試從庫(kù)搜索路徑中查找實(shí)現(xiàn)庫(kù)的類或模塊?;旧?,這意味著庫(kù)代碼及其所有可能的依賴項(xiàng)必須在PYTHONPATH中,或者在Jython上運(yùn)行測(cè)試時(shí),必須在 CLASSPATH中。設(shè)置庫(kù)搜索路徑在其自身的一節(jié)中進(jìn)行了解釋。庫(kù)還可以自動(dòng)設(shè)置搜索路徑,或者有關(guān)于如何執(zhí)行此操作的特殊說(shuō)明。例如,所有 標(biāo)準(zhǔn)庫(kù)都自動(dòng)位于庫(kù)搜索路徑中。

這種方法的最大好處是,當(dāng)配置庫(kù)搜索路徑時(shí),通常使用自定義啟動(dòng)腳本,普通用戶不需要考慮實(shí)際安裝庫(kù)的位置。缺點(diǎn)是將您自己的,可能非常簡(jiǎn)單的庫(kù)放入搜索路徑可能需要一些額外的配置。

使用到庫(kù)的路徑

指定要導(dǎo)入的庫(kù)的另一種機(jī)制是在文件系統(tǒng)中使用它的路徑。此路徑被認(rèn)為是相對(duì)于當(dāng)前測(cè)試數(shù)據(jù)文件所在的目錄,與資源和變量文件的路徑類似。這種方法的主要好處是無(wú)需配置庫(kù)搜索路徑。

如果庫(kù)是文件,則其路徑必須包含擴(kuò)展名。對(duì)于Python庫(kù),擴(kuò)展名自然是.py,對(duì)于Java庫(kù),它可以是.class或.java,但類文件必須始終可用。如果將Python庫(kù)實(shí)現(xiàn)為目錄,則其路徑必須具有正斜杠(/)。以下示例演示了這些不同的用法。

Setting Value Value Value
Library PythonLib.py
Library /absolute/path/JavaLib.java
Library relative/path/PythonDirLib/ possible arguments
Library ${RESOURCES}/Example.class

這種方法的局限性在于,作為Python類實(shí)現(xiàn)的庫(kù)必須位于與類同名的模塊中。此外,使用此機(jī)制無(wú)法導(dǎo)入以JAR或ZIP包分發(fā)的庫(kù)。

2.4.2給測(cè)試庫(kù)設(shè)置自定義名稱

庫(kù)名稱顯示在關(guān)鍵字名稱之前的測(cè)試日志中,如果多個(gè)關(guān)鍵字具有相同的名稱,則必須使用它們,以便 關(guān)鍵字名稱以庫(kù)名稱為前綴。庫(kù)名通常來(lái)自實(shí)現(xiàn)它的模塊或類名,但在某些情況下需要更改它:

  • 需要使用不同的參數(shù)多次導(dǎo)入同一個(gè)庫(kù)。否則這是不可能的。
  • 庫(kù)名稱不方便長(zhǎng)。例如,如果Java庫(kù)具有長(zhǎng)包名稱,則可能發(fā)生這種情況。
  • 您希望使用變量在不同環(huán)境中導(dǎo)入不同的庫(kù),但請(qǐng)使用相同的名稱引用它們。
  • 庫(kù)名稱具有誤導(dǎo)性或其他差異性。在這種情況下,更改實(shí)際名稱當(dāng)然是更好的解決方案。

指定新名稱的基本語(yǔ)法是在庫(kù)名后面加上文本 WITH NAME(不區(qū)分大小寫(xiě)),然后在下一個(gè)單元格中使用新名稱。指定的名稱顯示在日志中,并且在使用關(guān)鍵字的全名(LibraryName.Keyword Name)時(shí)必須在測(cè)試數(shù)據(jù)中使用。

Setting Value Value Value
Library com.company.TestLib WITH NAME TestLib
Library ${LIBRARY} WITH NAME MyName

庫(kù)的可能參數(shù)放在原始庫(kù)名稱和WITH NAME文本之間的單元格中。以下示例說(shuō)明了如何使用不同的參數(shù)多次導(dǎo)入相同的庫(kù):

Setting Value Value Value Value Value
Library SomeLibrary localhost 1234 WITH NAME LocalLib
Library SomeLibrary server.domain 8080 WITH NAME RemoteLib
Test Case Action Argument Argument
My Test LocalLib.Some Keyword some arg second arg
RemoteLib.Some Keyword another arg whatever
LocalLib.Another Keyword

將自定義名稱設(shè)置為測(cè)試庫(kù)既可以在“設(shè)置”表中導(dǎo)入庫(kù),也可以在使用“ 導(dǎo)入庫(kù)”關(guān)鍵字時(shí)使用。

2.4.3標(biāo)準(zhǔn)庫(kù)

一些測(cè)試庫(kù)與Robot Framework一起分發(fā),這些庫(kù)稱為標(biāo)準(zhǔn)庫(kù)。這些是可用的標(biāo)準(zhǔn)庫(kù):

BuiltIn庫(kù)是特殊的,因?yàn)樗詣?dòng)使用,因此它的關(guān)鍵字始終可用。其他標(biāo)準(zhǔn)庫(kù)需要以與任何其他庫(kù)相同的方式導(dǎo)入,但不需要安裝它們。此外,它們?cè)谑褂肞ython和Jython運(yùn)行測(cè)試時(shí)也起作用(將Screenshot庫(kù)作為例外)。

將來(lái)可以并且將來(lái)添加新的標(biāo)準(zhǔn)庫(kù)。如果您對(duì)新標(biāo)準(zhǔn)庫(kù)有所了解,或者甚至可以立即合并,請(qǐng)聯(lián)系Robot Framework開(kāi)發(fā)人員。通常,如果庫(kù)是通用的,則可以將庫(kù)添加到標(biāo)準(zhǔn)庫(kù)中,在沒(méi)有任何外部依賴性的情況下在Python和Jython上工作,并且經(jīng)過(guò)充分的測(cè)試和記錄。

BuiltIn庫(kù)

BuiltIn庫(kù)提供了一組經(jīng)常需要的通用關(guān)鍵字。它會(huì)自動(dòng)導(dǎo)入,因此始終可用。提供的關(guān)鍵字可用于例如驗(yàn)證(例如,應(yīng)該等于,應(yīng)該包含),轉(zhuǎn)換(例如轉(zhuǎn)換為整數(shù))和用于各種其他目的(例如,日志,睡眠,運(yùn)行關(guān)鍵字如果,設(shè)置全局變量)。

BuiltIn庫(kù)中的關(guān)鍵字名稱已在Robot Framework 1.8版中重命名。所有舊關(guān)鍵字仍然有效,但不推薦使用的關(guān)鍵字的長(zhǎng)名稱(日志文件中可見(jiàn)的名稱)以DeprecatedBuiltIn開(kāi)頭。(例如, DeprecatedBuiltIn.Equals)。強(qiáng)烈建議使用關(guān)鍵字的新名稱,因?yàn)榕f版本將來(lái)會(huì)被刪除。

有關(guān)更多信息,請(qǐng)參閱BuiltIn庫(kù)文檔

OperatingSystem庫(kù)

OperatingSystem庫(kù)允許在運(yùn)行Robot Framework的系統(tǒng)中執(zhí)行各種與操作系統(tǒng)相關(guān)的任務(wù)。除其他外,它可以執(zhí)行命令(例如運(yùn)行),創(chuàng)建和刪除文件和目錄(例如創(chuàng)建文件,刪除目錄),檢查文件或目錄是否存在或包含某些內(nèi)容(例如文件應(yīng)該存在,目錄應(yīng)該為空)和操縱環(huán)境變量(例如設(shè)置環(huán)境變量)。

OperatingSystem庫(kù)中的關(guān)鍵字名稱已在Robot Framework 1.8中重命名,類似于BuiltIn關(guān)鍵字的名稱。

有關(guān)更多信息,請(qǐng)參閱OperatingSystem庫(kù)文檔。

Telnet庫(kù)

Telnet庫(kù)可以連接到Telnet服務(wù)器并在打開(kāi)的連接上執(zhí)行命令。

有關(guān)更多信息,請(qǐng)參閱Telnet庫(kù)文檔

Collections 集合庫(kù)

Collections庫(kù)提供了一組用于處理Python列表和字典的關(guān)鍵字。該庫(kù)具有關(guān)鍵字,例如,用于修改和獲取列表和詞典中的值(例如,附加到列表,從詞典中獲?。┮约坝糜隍?yàn)證其內(nèi)容(例如,列表應(yīng)該相等, 詞典應(yīng)該包含值)。

有關(guān)更多信息,請(qǐng)參閱集合庫(kù)文檔。

String 字符串庫(kù)

字符串庫(kù)可以操作字符串(例如,使用Regexp替換字符串,拆分為行)并驗(yàn)證其內(nèi)容(例如,應(yīng)該是字符串)。

有關(guān)更多信息,請(qǐng)參閱字符串庫(kù)文檔。該庫(kù)是Robot Framework 2.1中的新增功能。

Dialogs 對(duì)話框庫(kù)

Dialogs庫(kù)提供暫停測(cè)試執(zhí)行和從用戶獲取輸入的方法。對(duì)話框略有不同,具體取決于在Python或Jython上運(yùn)行的測(cè)試,但它們提供相同的功能。

有關(guān)更多信息,請(qǐng)參閱Dialogs庫(kù)文檔。該庫(kù)是Robot Framework 2.1中的新增功能。

ScreenShot 截圖庫(kù)

屏幕截圖庫(kù)具有捕獲和存儲(chǔ)整個(gè)桌面的屏幕截圖的關(guān)鍵字。該庫(kù)使用Java AWT API實(shí)現(xiàn),因此只有在Jython上運(yùn)行Robot Framework時(shí)才能使用它。

有關(guān)更多信息,請(qǐng)參閱屏幕截圖庫(kù)文檔。

Remote 遠(yuǎn)程庫(kù)

遠(yuǎn)程庫(kù)與其他標(biāo)準(zhǔn)庫(kù)完全不同。它沒(méi)有自己的任何關(guān)鍵字,但它作為Robot Framework和實(shí)際測(cè)試庫(kù)實(shí)現(xiàn)之間的代理。這些庫(kù)可以在除核心框架之外的其他機(jī)器上運(yùn)行,甚至可以使用Robot Framework本身不支持的語(yǔ)言來(lái)實(shí)現(xiàn)。

有關(guān)該概念的更多信息,請(qǐng)參見(jiàn)單獨(dú)的遠(yuǎn)程庫(kù)接口部分。該庫(kù)是Robot Framework 2.1中的新增功能。

2.4.4外部庫(kù)

根據(jù)定義,任何不屬于標(biāo)準(zhǔn)庫(kù)的測(cè)試庫(kù)都是外部庫(kù)。Robot Framework開(kāi)發(fā)人員提供了一些通用庫(kù),例如SeleniumLibrarySwingLibrary,它們不與框架本身打包在一起,因?yàn)樗鼈冃枰獠恳蕾図?xiàng)。通用庫(kù)也可以由其他方提供,大多數(shù)團(tuán)隊(duì)也只為自己提供一些自定義庫(kù)。

不同的外部庫(kù)可以使用完全不同的機(jī)制來(lái)安裝和引入它們。通常,它們還需要單獨(dú)安裝其他一些依賴項(xiàng)。所有庫(kù)都應(yīng)該有明確的說(shuō)明,并最好自動(dòng)化安裝。

有關(guān)如何為自己的或一般用法創(chuàng)建新測(cè)試庫(kù)的更多信息,請(qǐng)參閱創(chuàng)建測(cè)試庫(kù)部分。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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