前情介紹:
自動化測試有時候從UI層面上不好定位元素的時候溃斋,通常會采取用模擬請求的方式來進行測試,也就是我們通常所說的接口測試吸申。
練習環(huán)境配置
實例1(UI自動化-百度搜索)
實例2(有效登錄)
實例3(無效登錄)
實例4 (Appium)
實例5 (連接mysql數(shù)據(jù)庫)
Appium Error總結
robotframework Error總結
針對于GET/POST請求,RF的實現(xiàn)首推requestsLibrary和requests庫享甸。
requestsLibrary截碴、requests安裝
前面介紹了pip安裝,如果pip不好用或者網(wǎng)絡不好的同學蛉威,可以本地安裝日丹,到下面官網(wǎng)下載進行手動安裝。
requests的官方下載地址: https://pypi.python.org/pypi/requests
requestsLibrary的官方下載地址: https://pypi.python.org/pypi/robotframework-requests/
如果是下載tar.gz包安裝蚯嫌,先要安裝requests哲虾,再安裝requestsLibrary
測試需求:
想驗證用不同的測試數(shù)據(jù),登錄功能是否是否成功
測試設計:
之前是通過UI上來輸入數(shù)據(jù)的方式來實現(xiàn)的择示,這一次我們嘗試用GET或者POST方式
測試實現(xiàn)
1 . 用Httpwatch或者fiddler等工具來抓取smeoa系統(tǒng)登錄時候的數(shù)據(jù)包束凑,查看需要的地址和參數(shù)
2 . 使用requestslibrary庫里的post request請求來完成登錄。(為了實現(xiàn)不同的數(shù)據(jù)測試登錄栅盲,將username和password參數(shù)化)
3 . 登錄功能實際的輸入就是username和password汪诉,輸出為不同的提示信息,依據(jù)這一思想谈秫,可以把登錄部分的這個操作抽離出來作為一個關鍵字扒寄。
4 . 在測試用例層導入這個包含有關鍵字login的resource。
5 . 分別編寫不同的測試用例來輸入不同的數(shù)據(jù)拟烫。
比如上圖中的測試用例就是用來做正常的登錄測試的该编。
最終實現(xiàn)代碼可參考:
*** Settings ***
Resource action.txt
Library RequestsLibrary
*** Test Cases ***
validlogin
login admin admin 退出
Invalid username
login admin123 admin 帳號或密碼錯誤!
Invalid password
login admin admin123 帳號或密碼錯誤硕淑!
Invalid both
login admin1 admin13 帳號或密碼錯誤课竣!
visithome
Create Session home http://localhost
${addr} Get request home /smeoa/index.php?m=login&a=index
should be equal as strings ${addr.status_code} 200
*** Keywords ***
login
[Arguments] ${username} ${password} ${expect}
${headers} create dictionary Content-Type=application/x-www-form-urlencoded
${param} create dictionary emp_no=${username} password=${password}
create session api http://localhost
${addr} post request api /smeoa/index.php?m=login&a=check_login data=${param} headers=${headers}
should be equal as strings ${addr.status_code} 200
${content} set variable ${addr.content.decode('utf-8')}
should contain ${content} ${expect}
參考 RequestsLibrary庫里的關鍵詞(可以F5直接查看)
常用的:(RF里面對每一個自提供的關鍵字都有很詳細的介紹,F(xiàn)5以后可以盡情查看喜颁,好多時候只是大家用錯了參數(shù)而已)
Create Session: 創(chuàng)建一個session稠氮,連接某個服務器。
Create Ntlm Session: 也是創(chuàng)建一個session半开,只不過加上了域隔披、用戶名、密碼用于NTLM認證寂拆。
Get Request: 通過GET方式發(fā)起請求奢米。
Post Request: 通過POST方式發(fā)起請求抓韩。
Head Request: 發(fā)送一個HEAD請求。
TO Json: 將文本轉換成json對象鬓长。