RobotFramework初識

backgroudimage

背景

RF這個自動化框架在很早的時候我就有看劈狐,不過當(dāng)時被網(wǎng)絡(luò)上坑爹的教程欺騙了,所有的網(wǎng)絡(luò)教程寫的都是用它的ride來編寫腳本县匠,局限性太大,當(dāng)時也很懶撒轮,并沒有去看官方文檔乞旦,所以一直感覺這框架很無聊,不如直接去敲代碼题山。

最近換工作兰粉,新工作要求使用RF來寫自動化腳本,沒辦法顶瞳,硬著頭皮去看了一下官方文檔玖姑,然后自己寫了幾個demo,發(fā)現(xiàn)完全不是以前自己認(rèn)識的那么回事慨菱。

新接觸框架焰络,還是建議先看看官方文檔

結(jié)構(gòu)

Robot Framework的結(jié)構(gòu)其實就是通過代碼中的關(guān)鍵字符喝,映射到框架中闪彼,然后執(zhí)行對應(yīng)的方法,可以簡單整理為如下的結(jié)構(gòu)

RF結(jié)構(gòu)

所以Robot Framework實際上就是執(zhí)行Python的代碼协饲。

示例

我們來看一個簡單的示例:

  • 創(chuàng)建一個字典
  • 給字典賦值
  • 把字典打印出來

用Python的代碼來實現(xiàn)非常簡單畏腕。

dict = {
    "a": "1",
    "b": "2",
    "c": "3"
}
print dict

我們來看Robot Framework的代碼

*** Settings ***
Library  Collections

*** Test Cases ***
TestCase001
    ${dict}     create dictionary
    set to dictionary   ${dict}  a=1      b=2     c=3
    log  ${dict}

執(zhí)行結(jié)果如下


RF執(zhí)行結(jié)果

Robot Framework的代碼實現(xiàn)起來確實有點麻煩,用Python直接寫明顯是簡單粗暴的茉稠。

我們來看Robot Framework的底層實現(xiàn)方式描馅,比如set to dictionary這個方法,在Python中代碼是這樣的:

    def set_to_dictionary(self, dictionary, *key_value_pairs, **items):
        if len(key_value_pairs) % 2 != 0:
            raise ValueError("Adding data to a dictionary failed. There "
                             "should be even number of key-value-pairs.")
        for i in range(0, len(key_value_pairs), 2):
            dictionary[key_value_pairs[i]] = key_value_pairs[i+1]
        dictionary.update(items)
        return dictionary

封裝后的方法是不區(qū)分大小寫的而线,也就是說set to dictionarySet To DictionarySET TO DICTIONARY是等效的铭污,調(diào)用的都是同一個方法。

代碼可以對應(yīng)Robot Framework的實現(xiàn)方法吞获,需要傳入一個字典况凉,然后是k-v對形式做拆分谚鄙,變?yōu)橐粋€一個單獨的值各拷,以列表的形式傳入,再用for循環(huán)用步長為2進(jìn)行迭代闷营,按順序生成一個字典然后返回烤黍。

關(guān)于Ride

這個東西貌似所有教程都在推薦知市,反正我是不喜歡用,寫起來很麻煩速蕊,我還是習(xí)慣了用Pycharm來寫嫂丙,裝一個IntelliBot的插件就可以高亮語法,也可以直接執(zhí)行腳本规哲。用Pycharm來寫RF的方法請查看這里跟啤。

編寫方式

官方文檔推薦的編寫方式就是用txt文本來編寫。

Robot Framework test data is defined in tabular format, using either hypertext markup language (HTML), tab-separated values (TSV), plain text, or reStructuredText (reST) formats. The details of these formats, as well as the main benefits and problems with them, are explained in the subsequent sections. Which format to use depends on the context, but the plain text format is recommended if there are no special needs.

最優(yōu)一句說的很明白了唉锌,如果沒有特殊的需求隅肥,推薦使用plain text格式來寫,也就是txt格式袄简。

不建議用ride的表格形式來填寫腥放,效率極其低下,而且我也有遇到過提示出錯的情況绿语。

中文編程

這點應(yīng)該是看到最奇怪的點了秃症,剛剛接手項目代碼的時候,我一直以為中文是方法的說明吕粹,看的我一度在懷疑人生种柑,結(jié)果和同事聊了一下發(fā)現(xiàn),RF是支持中文關(guān)鍵字的匹耕,比如如下代碼是可以正常執(zhí)行的莹规。

*** Settings ***
Library  Collections

*** Keywords ***
打印字典
    [Documentation]  傳入字典參數(shù),自動打印
    [Arguments]  ${dict}
    set to dictionary  ${dict}      a=1     b=2     c=3
    log  ${dict}

*** Test Cases ***
TestCase001
    ${dict_test}     create dictionary
    打印字典  ${dict_test}

執(zhí)行結(jié)果如下

D:\Python27\Scripts\pybot.bat -d results test1.txt
==============================================================================
Test1                                                                         
==============================================================================
TestCase001                                                           | PASS |
------------------------------------------------------------------------------
Test1                                                                 | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output:  C:\Users\Administrator\PycharmProjects\RobotFramework\Chapter1\results\output.xml
Log:     C:\Users\Administrator\PycharmProjects\RobotFramework\Chapter1\results\log.html
Report:  C:\Users\Administrator\PycharmProjects\RobotFramework\Chapter1\results\report.html

恩泌神,我感覺回到了以前寫易語言的時代良漱,只要封裝的好,也可以用中文來寫Python了欢际。

總結(jié)

Robot Framework是一個不錯的框架母市,尤其是在封裝好一定的庫和或者關(guān)鍵字后,可以提供給不會寫代碼的同事來寫自動化腳本损趋。

規(guī)范化的東西都有局限性患久,必然會有對應(yīng)的學(xué)習(xí)成本。直接用Python寫確實是更靈活方便浑槽,但是框架的東西就非常有規(guī)范蒋失,只要懂了這個規(guī)范,所有人都能拿來就上手桐玻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篙挽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子镊靴,更是在濱河造成了極大的恐慌铣卡,老刑警劉巖链韭,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異煮落,居然都是意外死亡敞峭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門蝉仇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旋讹,“玉大人,你說我怎么就攤上這事轿衔∑澹” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵呀枢,是天一觀的道長胚股。 經(jīng)常有香客問我,道長裙秋,這世上最難降的妖魔是什么琅拌? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮摘刑,結(jié)果婚禮上进宝,老公的妹妹穿的比我還像新娘。我一直安慰自己枷恕,他們只是感情好党晋,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著徐块,像睡著了一般未玻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胡控,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天扳剿,我揣著相機與錄音,去河邊找鬼昼激。 笑死庇绽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的橙困。 我是一名探鬼主播瞧掺,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凡傅!你這毒婦竟也來了辟狈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤像捶,失蹤者是張志新(化名)和其女友劉穎上陕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拓春,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡释簿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了硼莽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庶溶。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖懂鸵,靈堂內(nèi)的尸體忽然破棺而出偏螺,到底是詐尸還是另有隱情,我是刑警寧澤匆光,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布套像,位于F島的核電站,受9級特大地震影響终息,放射性物質(zhì)發(fā)生泄漏夺巩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一周崭、第九天 我趴在偏房一處隱蔽的房頂上張望柳譬。 院中可真熱鬧,春花似錦续镇、人聲如沸美澳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽制跟。三九已至,卻和暖如春酱虎,著一層夾襖步出監(jiān)牢的瞬間凫岖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工逢净, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哥放,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓爹土,卻偏偏與公主長得像甥雕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胀茵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,302評論 25 707
  • Robot Framework是一款python編寫的功能自動化測試框架社露。具備良好的可擴展性,支持關(guān)鍵字驅(qū)動琼娘,可以...
    CC先生之簡書閱讀 2,121評論 1 4
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,502評論 6 427
  • 對于不熟悉的東西峭弟,本能的有恐懼排斥感附鸽。但是沒辦法,不去嘗試瞒瘸,永遠(yuǎn)不知道那是怎樣的事情坷备。也走到這步,選擇了那些情臭,就...
    吳箴訫閱讀 238評論 1 0
  • 2017年的目標(biāo) 一省撑、對生活做減法 1、不用的不喜歡的不合適的物品統(tǒng)統(tǒng)滴從我身邊送走俯在,保持生活的空間足夠空闊竟秫。 2...
    簡單歲月2019閱讀 187評論 0 1