jenkins+robotframework接口自動化實戰二

將昨天分享的文件夾CustomLibrary放在目錄C:\\Python27\\Lib\\site-packages\\下,這樣我們就可以調用自己的庫了。

1、 打開rf,新建一個項目,點擊File->New Project,輸入名稱,由於我自己的ride版本問題,不支持中文,所以項目名稱一定不能用漢字,項目名稱下級目錄或者suit或者case名稱都可以是中文,然後Type勾選directory,format勾選txt,如圖:


jenkins+robotframework接口自動化實戰二

點擊ok,如圖:


jenkins+robotframework接口自動化實戰二

2、可以右擊項目名稱"Yanshi",還可以繼續添加目錄或者suit,suit下面是可以添加case的。我們繼續添加一個文件夾,右擊項目名稱,輸入新的文件夾名稱"演示不同角色用戶操作",format依舊選擇txt,如圖:


jenkins+robotframework接口自動化實戰二

點擊ok,然後右擊新建的目錄"演示不同角色用戶操作",選擇New Suite,名稱是"普通用戶的相關操作",如圖:


jenkins+robotframework接口自動化實戰二

點擊ok,這樣suite也建好了,繼續右擊新建的suite,"普通用戶的相關操作",選擇new test case。比如我們可能有十個接口,就需要建10個case,創建我們的第一個接口case,如圖:


jenkins+robotframework接口自動化實戰二

小技巧:我們在新建case時,名稱前面可以加上阿拉伯數字,這樣重新打開rf時,case會按照阿拉伯數字排序,當然我們也可以通過ctrl+上下鍵來設置case的排序。

我們的第一個case就是登錄接口,如圖:


jenkins+robotframework接口自動化實戰二


4、再右擊項目名稱"Yanshi",選擇"New Resource",名稱為share_resource,format格式為txt,如圖:


jenkins+robotframework接口自動化實戰二

點擊ok,如圖:


jenkins+robotframework接口自動化實戰二

這個share_resource.txt可以添加一些自己封裝的關鍵字,等我們用到的時候再給大家詳細說一下。

5、點擊suite"普通用戶的相關操作",如圖:


jenkins+robotframework接口自動化實戰二

這邊可以添加庫和resource,庫可以是python提供的,也可以是我們自己封裝的,如CustomLibrary,resource可以是我們剛才創建的share_resource.txt,點擊Resource,如圖:


jenkins+robotframework接口自動化實戰二

輸入的是../share_resource.txt,之所以這麼輸入是根據目錄結構,大家看下:


jenkins+robotframework接口自動化實戰二

我們創建的suite,都是txt文件,"普通用戶的相關操作"與share_resource.txt不在同一級目錄,share_resource.txt在"普通用戶的相關操作.txt"上一級目錄,


jenkins+robotframework接口自動化實戰二

所以輸入的resource的格式才是../share_resource.txt,我們接著添加一些常用的庫,點擊Library,如圖:

jenkins+robotframework接口自動化實戰二

大概會用到這些庫


jenkins+robotframework接口自動化實戰二


CustomLibrary庫是我們自己封裝的,不需要在安裝了,data_center.py也是在CustomLibrary目錄裡,也不需要安裝,只要輸入路徑就可以了,安裝RequestsLibrary,通過命令:

pip install robotframework-requests,如果還想升級這個庫,可以通過命令:

pip install --upgrade robotframework-requests,

如果升級失敗,將robotframework_requests-0.3.7-py2.7.egg-info(C:\\Python27\\Lib\\site-packages目錄下),直接刪掉,然後再次升級,(這個可以根據大家自己的實際情況來操作), 我的robotframework-requests版本是0.5.0,

Collections,String,json庫也是系統自帶的,我們還需要安裝:

pip install urllib3我安裝的版本是1.25.6

小技巧:如果大家想安裝指定版本,可以pip install urllib3==1.25.6

如果大家不知道有哪些版本可供安裝,可以pip install urllib3==100000000000,版本號數字可以寫很大,這樣系統就會自動把可選版本列舉出來。是不是很方便。

這樣庫也導入好了之後,就可以寫登錄了,如圖:


jenkins+robotframework接口自動化實戰二

第一行:獲取excel裡面第一個sheet的所有數據,我們可以,通過alt+m來判斷這個關鍵字是屬於什麼庫,如圖:


jenkins+robotframework接口自動化實戰二

這個get the excel data 就是我們自己封裝的關鍵字,來自於我們創建的share_resource.txt,這是展示給大家看下,現在我們來在share_resource.txt創建自己的關鍵字,右擊share_resource.txt,選擇"New User Keyword",name為 get the excel data,如圖:


jenkins+robotframework接口自動化實戰二

這個關鍵字有兩個參數,點擊Arguments,如圖:


jenkins+robotframework接口自動化實戰二

參數格式為:${arg1} | ${arg2},多個參數中間用'|'隔開,

arg1標識excel的名字,arg2為第幾個sheet,0表示第一個sheet,1表示第二個sheet,依次類推;

第一行:arg2轉化為整數;

第二行:讀取excel,將讀取的內容存在列表@{Test_Data},Read Data From Excel是data_center.py裡面的函數,不會讀取首行和首列,保存的是一個二維數組,

第三行:comment是個註釋,也可以用"#";

第四行:通過系統關鍵字Get Length獲取@{Test_Data}的長度;

第五行和第六行:通過關鍵字Set Global Variable 將變量設置為全局變量,這樣這個suite下面的所有case都可以使用這個變量,我們也是通過這個方法進行接口之間傳參的,之後我們還會詳細演示;

小技巧:系統關鍵字我們只輸入前面兩三個字符,然後按ctrl+alt+space鍵,會自動關聯出來


jenkins+robotframework接口自動化實戰二

這個${Excel_Name}是我們在share_reosurce.txt定義的變量:右擊share_resource.txt,選擇New Scalar,輸入變量名稱以及excel的名稱就可以了,不需要帶路徑,如圖:


jenkins+robotframework接口自動化實戰二

第二行:將${Test_Data}轉化為list,通過關鍵字Convert To List,

第三行:通過for循環來執行excel裡面每一行的數據;

:FOR ${index} IN RANGE ${Test_Data_Length}

下一行需要縮進一格,如圖:


jenkins+robotframework接口自動化實戰二

第四行:log是系統關鍵字,就是打印功能

第五-八行:通過關鍵字 Set Variable將excel裡面讀取的變量賦值給我們的變量;

${Test_Data}是一個二維變量,${Test_Data[0]}表示第一行的所有數據;${Test_Data[0][0]}表示第一行第一列的所有數據。

第九行:發送post請求,這個請求也是我們自己封裝的關鍵字,還是需要在share_resource.txt添加New User Keyword,名稱為send post request,主要有三個參數,域名,接口,參數值,並且有一個返回值,返回值就是響應報文,send post request內容如圖:


jenkins+robotframework接口自動化實戰二


發送post請求都是有固定格式的,先創建字典,字典的值需要傳給頭,然後創建別名,然後發送post請求,get請求情況相同。

第1行:通過create Dictionary 創建字典,我們系統登錄的請求主要需要兩個請求頭,X-Requested-With=XMLHttpRequest和Content-Type=application/x-www-form-urlencoded,需要什麼樣的頭文件格式可以看接口文檔,也可以自己通過fillder抓包查看:


jenkins+robotframework接口自動化實戰二


jenkins+robotframework接口自動化實戰二

也可以單獨放到jmeter裡面調試一下。

第2行:創建session,通過關鍵字create session,我是把接口和域名連起來創建session


jenkins+robotframework接口自動化實戰二


第3行:發送post請求,關鍵字post request,返回的值賦值給變量${request}


jenkins+robotframework接口自動化實戰二

api就是上一步創建session用到的,headers=${dict},將創建的字典賦值給headers,headers也是系統的關鍵字,data=${value},data也是系統關鍵字;

第4行:將${request.content}的內容設置為utf-8格式,${request.content}就是接口請求的返回報文,賦值給變量${requestdata};

第5行:將${request.status_code}賦值給變量${code},就是接口請求的響應碼,例如200,201,401之類的;

第6行:將${code}轉化成string類型,因為之後會用這個值和一些響應碼作比較,現在的值都是int類型,所以先轉換成string類型;

第7行:將${code}設置為全局變量,這樣其他地方都可以調用該變量了;

第8~9行:都是註釋不需要管;

第10行:使用系統關鍵字Evaluate,Evaluate執行python的表達式,${requestdata}的實際內容是:

[{"state":"1","userId":"XXXXX","msgCode":"0","msg":""}],是一個列表;${requestdata}[0]就是{"state":"1","userId":"XXXXX","msgCode":"0","msg":""},是一個字典,這樣又可以使用系統關鍵字來取相應的字段值了;

第11行:通過Get From Dictionary系統關鍵字獲取userid 的值為XXXXX,


jenkins+robotframework接口自動化實戰二

第12行:將${userid}設置為全局變量,方便其他接口使用,

這樣request post請求就寫完了,再次回到登錄接口

7、查看登錄接口內容:

第10行:這邊將i+1,主要是我們一開始讀取excel的時候首行和首列都未讀取,但是現在要把請求返回的響應報文寫入excel裡面,所以需要+1;

第11行:通過自定義關鍵字Write to excel,將響應報文寫入到excel,主要有5個參數,excel,sheet的number,行數,列數,響應報文內容,創建步驟還是和之前一樣,如圖:


jenkins+robotframework接口自動化實戰二

第12行:excel裡面我們寫的預期結果與實際結果作比較,通過自定義關鍵字,partial compare,如圖:


jenkins+robotframework接口自動化實戰二

這次的這個自定義關鍵字,我們給了一個返回值,${ReturnResult}

第13行:預期結果和響應報文內容判斷正確,打印測試成功,否則打印測試失敗

預期結果都是我們用jmeter跑完,知道了正確的結果,然後寫到excel裡面的,現在的項目excel登錄只有一個正確的用戶名/密碼,


jenkins+robotframework接口自動化實戰二

現在保存一下,運行我們的接口:


jenkins+robotframework接口自動化實戰二

哈哈,第一個登錄接口的case就寫好了,小夥伴們是不是覺得很簡單,在之後我們還會寫其他接口來調用登錄的userid,並且我們的excel裡面不止一條測試場景,敬請期待!!!


分享到:


相關文章: