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ù),例如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ù)部分。