雖然已經(jīng)把函數(shù)寫(xiě)好集乔,但現(xiàn)在我們還是只有一組用戶名和密碼去件。測(cè)試需要多組數(shù)據(jù),需要一個(gè)數(shù)據(jù)集饺著,那應(yīng)該把數(shù)據(jù)寫(xiě)到哪兒呢箫攀?對(duì),沒(méi)錯(cuò)幼衰,萬(wàn)能的Excel靴跛。
我新建了一個(gè)叫TCLOG-1.xls的文件,把tab起名為“l(fā)ogin”渡嚣,創(chuàng)建了兩列梢睛,一列叫EmpCode,另一列叫Password识椰,然后從第二行開(kāi)始輸入數(shù)據(jù)绝葡。一個(gè)簡(jiǎn)單的數(shù)據(jù)集就創(chuàng)建好了:
然后把文件放到項(xiàng)目目錄下。以我為例腹鹉,我在項(xiàng)目根目錄下創(chuàng)建了個(gè)叫Test_Data和Login的文件夾藏畅,把文件放進(jìn)去。路徑就是:D:\sourcecode\xiaocesuo.robotframework.selenium2library\Test_Data\Login\TCLOG-1.xls」χ洌現(xiàn)在我們需要知道讀取文件的關(guān)鍵字就可以了愉阎。之前說(shuō)過(guò),RF是基于Python的力奋,所有的關(guān)鍵字背后都是一個(gè)一個(gè)python方法榜旦,這些方法都存在類(lèi)庫(kù)里。為了給大家順便演示一下景殷,我就借著這個(gè)例子自己動(dòng)手寫(xiě)了一個(gè)讀取文件的小類(lèi)庫(kù)溅呢。大家可以直接拿去用澡屡,下載源代碼里面都有,名稱叫DataDriven.py:
這段小程序里有三個(gè)方法咐旧,分別是read_csv_file驶鹉,read_xls_file,xls_to_csv休偶。前兩個(gè)分別用于讀格式為.csv和.xls的Excel文件梁厉,最后一個(gè)是從.xls轉(zhuǎn)換成.csv。這幾個(gè)方法名稱中間用下劃線隔開(kāi)踏兜,它們會(huì)自動(dòng)被Robot Framework識(shí)別成為新的類(lèi)庫(kù)關(guān)鍵字,而且新的關(guān)鍵字會(huì)把下劃線轉(zhuǎn)換成空格八秃,所以三個(gè)新關(guān)鍵字分別為“Read Csv File”碱妆,“Read Xls File”,“Xls to Csv”昔驱。顯然疹尾,咱們的例子需要使用第二種。通過(guò)程序可知Read Xls File接收f(shuō)ilename和worksheet兩個(gè)參數(shù)骤肛。前者代表文件名纳本,后者是tab名。返回值是xls_data腋颠,代表數(shù)據(jù)集繁成。在項(xiàng)目下創(chuàng)建一個(gè)Lib文件夾把它放里邊,然后在MyFirstTestCase中點(diǎn)擊Library加載:
你看淑玫,它就跟Selenium2Library的作用是一樣的巾腕,提供了一個(gè)類(lèi)庫(kù)并且包含了三個(gè)方法⌒踺铮回到TCLOG-1中修改如下:
Read Xls File也變成了淺藍(lán)色尊搬,跟Selenium2Library關(guān)鍵字顯示得一樣,證明合法了土涝。所以現(xiàn)在可以總結(jié)一下:自己寫(xiě)的類(lèi)庫(kù)方法(Read Xls File)會(huì)變成淺藍(lán)色佛寿,而自己寫(xiě)的一般方法(Login to hysystem)會(huì)顯示成深藍(lán)色。文件名參數(shù)位置寫(xiě)的是文件的路徑但壮。tab里寫(xiě)的是login冀泻。需要注意的是,“$”在Python中代表字段或變量茵肃,而“@”則代表集合腔长。有人可能問(wèn)為什么返回值是集合呢?因?yàn)閿?shù)據(jù)在@{data}里是這樣存的:
@{data}={第一行數(shù)據(jù)验残,第二行數(shù)據(jù)捞附,第三行數(shù)據(jù)},當(dāng)然咱們這個(gè)例子最簡(jiǎn)單,只有一行鸟召,@{data}={第一行數(shù)據(jù)}胆绊。而每一行數(shù)據(jù)也是一個(gè)數(shù)組:@一行數(shù)據(jù) ={EmpCode,Password}欧募。所以整個(gè)數(shù)據(jù)集是用一個(gè)二維數(shù)組來(lái)存的压状。有些人可能理解起來(lái)有點(diǎn)困難,不要著急跟继≈侄看完咱們的例子就懂了。
我把程序改成了這個(gè)樣子:
因?yàn)镋xcel文件里有很多行數(shù)據(jù)舔糖,我用了一個(gè)for循環(huán)語(yǔ)句來(lái)一行一行讀娱两。程序會(huì)一行一行讀取數(shù)據(jù),直到最后一行為止金吗。每次讀出來(lái)一行數(shù)據(jù)就賦給${row}這個(gè)變量十兢,所以每次${row}都在不斷更新。因?yàn)門(mén)CLOG-1.xls里只有一行摇庙,所以讀完一行程序就停了刨裆,剛才說(shuō)了荧止,@一行數(shù)據(jù) ={EmpCode,Password},所以這里${row}也被看作是一個(gè)數(shù)組报慕,此時(shí)里邊就兩個(gè)值厕宗,{“1001”, “123”}徒恋。訪問(wèn)數(shù)組值的方式是${row[“UserName”]}和${row[“Password”]}辕近,所以第三行的意思就是把”1001”和”123”分別作為參數(shù)值傳到函數(shù)中去。
跑case迹冤,測(cè)試通過(guò)讽营。這篇文章的源代碼在[Test3](https://github.com/cslm/cslm.robotframework/tree/master/Test3)中。