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ù)「炜妫可以使用變量設(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)系作者
  • 序言:七十年代末学少,一起剝皮案震驚了整個(gè)濱河市剪个,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旱易,老刑警劉巖禁偎,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阀坏,居然都是意外死亡如暖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)忌堂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盒至,“玉大人,你說(shuō)我怎么就攤上這事士修〖纤欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵棋嘲,是天一觀的道長(zhǎng)酒唉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)沸移,這世上最難降的妖魔是什么痪伦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮雹锣,結(jié)果婚禮上网沾,老公的妹妹穿的比我還像新娘。我一直安慰自己蕊爵,他們只是感情好辉哥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著攒射,像睡著了一般醋旦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上会放,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天浑度,我揣著相機(jī)與錄音,去河邊找鬼鸦概。 笑死箩张,一個(gè)胖子當(dāng)著我的面吹牛甩骏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播先慷,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼饮笛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了论熙?” 一聲冷哼從身側(cè)響起福青,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淤毛,失蹤者是張志新(化名)和其女友劉穎颊乘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體仪际,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祝谚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年宪迟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片交惯。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡次泽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出席爽,到底是詐尸還是另有隱情意荤,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布只锻,位于F島的核電站玖像,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏齐饮。R本人自食惡果不足惜御铃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沈矿。 院中可真熱鬧,春花似錦咬腋、人聲如沸羹膳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)陵像。三九已至,卻和暖如春寇壳,著一層夾襖步出監(jiān)牢的瞬間醒颖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工壳炎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泞歉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像腰耙,于是被迫代替她去往敵國(guó)和親榛丢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容