Robot Framework + Selenium2Library自動(dòng)化測(cè)試系列(4) - 循環(huán)介紹,登錄改進(jìn):數(shù)據(jù)集

雖然已經(jīng)把函數(shù)寫好,但現(xiàn)在我們還是只有一組用戶名和密碼。測(cè)試需要多組數(shù)據(jù),需要一個(gè)數(shù)據(jù)集,那應(yīng)該把數(shù)據(jù)寫到哪兒呢?對(duì),沒錯(cuò),萬能的Excel。

我新建了一個(gè)叫TCLOG-1.xls的文件,把tab起名為“l(fā)ogin”,創(chuàng)建了兩列,一列叫EmpCode,另一列叫Password,然后從第二行開始輸入數(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)鍵字就可以了。之前說過,RF是基于Python的,所有的關(guān)鍵字背后都是一個(gè)一個(gè)python方法,這些方法都存在類庫(kù)里。為了給大家順便演示一下,我就借著這個(gè)例子自己動(dòng)手寫了一個(gè)讀取文件的小類庫(kù)。大家可以直接拿去用,下載源代碼里面都有,名稱叫DataDriven.py:

這段小程序里有三個(gè)方法,分別是read_csv_file,read_xls_file,xls_to_csv。前兩個(gè)分別用于讀格式為.csv和.xls的Excel文件,最后一個(gè)是從.xls轉(zhuǎn)換成.csv。這幾個(gè)方法名稱中間用下劃線隔開,它們會(huì)自動(dòng)被Robot Framework識(shí)別成為新的類庫(kù)關(guān)鍵字,而且新的關(guān)鍵字會(huì)把下劃線轉(zhuǎn)換成空格,所以三個(gè)新關(guān)鍵字分別為“Read Csv File”,“Read Xls File”,“Xls to Csv”。顯然,咱們的例子需要使用第二種。通過程序可知Read Xls File接收filename和worksheet兩個(gè)參數(shù)。前者代表文件名,后者是tab名。返回值是xls_data,代表數(shù)據(jù)集。在項(xiàng)目下創(chuàng)建一個(gè)Lib文件夾把它放里邊,然后在MyFirstTestCase中點(diǎn)擊Library加載:

你看,它就跟Selenium2Library的作用是一樣的,提供了一個(gè)類庫(kù)并且包含了三個(gè)方法。回到TCLOG-1中修改如下:

Read Xls File也變成了淺藍(lán)色,跟Selenium2Library關(guān)鍵字顯示得一樣,證明合法了。所以現(xiàn)在可以總結(jié)一下:自己寫的類庫(kù)方法(Read Xls File)會(huì)變成淺藍(lán)色,而自己寫的一般方法(Login to hysystem)會(huì)顯示成深藍(lán)色。文件名參數(shù)位置寫的是文件的路徑。tab里寫的是login。需要注意的是,“$”在Python中代表字段或變量,而“@”則代表集合。有人可能問為什么返回值是集合呢?因?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ù)組來存的。有些人可能理解起來有點(diǎn)困難,不要著急??赐暝蹅兊睦泳投恕?/p>

我把程序改成了這個(gè)樣子:

因?yàn)镋xcel文件里有很多行數(shù)據(jù),我用了一個(gè)for循環(huán)語句來一行一行讀。程序會(huì)一行一行讀取數(shù)據(jù),直到最后一行為止。每次讀出來一行數(shù)據(jù)就賦給${row}這個(gè)變量,所以每次${row}都在不斷更新。因?yàn)門CLOG-1.xls里只有一行,所以讀完一行程序就停了,剛才說了,@一行數(shù)據(jù) ={EmpCode,Password},所以這里${row}也被看作是一個(gè)數(shù)組,此時(shí)里邊就兩個(gè)值,{“1001”, “123”}。訪問數(shù)組值的方式是${row[“UserName”]}和${row[“Password”]},所以第三行的意思就是把”1001”和”123”分別作為參數(shù)值傳到函數(shù)中去。

跑case,測(cè)試通過。這篇文章的源代碼在[Test3](https://github.com/cslm/cslm.robotframework/tree/master/Test3)中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容