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ù)「炜妫可以使用變量設(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ù)唾糯,例如SeleniumLibrary和SwingLibrary怠硼,它們不與框架本身打包在一起,因?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ù)部分。