自動化測試模型 概念 自動化測試模型可以看作自動化測試框架與工具設(shè)計(jì)的思想。自動化測試不僅僅是單純寫寫腳本運(yùn)行就可以了,還需要考慮到如何使腳本運(yùn)行效率提高,代碼復(fù)用、參數(shù)化等問題。自動化測試模型分為四大類:線性模型,模塊化驅(qū)動測試、數(shù)據(jù)驅(qū)動、關(guān)鍵詞驅(qū)動。本地Web測試站點(diǎn)搭建: · 工具:帝國CMS · 下載地址:http://www./download/ - 安裝步驟 · 1、解壓安裝包; · 2、將安裝包的“EmpireServer”目錄復(fù)制到D盤根目錄;(D:\EmpireServer目錄名不可更改) · 3、雙擊“D:\EmpireServer\一鍵安裝.bat”;(用vista或windows7以上則要鼠標(biāo)右鍵以管理員身份運(yùn)行) · 4、至此,運(yùn)行環(huán)境及帝國CMS全部安裝完畢; · 5、在瀏覽器打入:http://localhost/e/admin 后回車,進(jìn)入帝國CMS后臺登陸界面。 · 前臺地址:http://localhost · 后臺地址:http://localhost/e/admin (登錄用戶名、密碼與認(rèn)證碼均為admin) · 搭建完成之后注冊一個(gè)測試賬號 51zxw 密碼:123456 線性模型線性腳本中每個(gè)腳本都相互獨(dú)立,且不會產(chǎn)生其他依賴與調(diào)用,其實(shí)就是簡單模擬用戶某個(gè)操作流程的腳本。 案例:在帝國軟件主頁自動登錄和退出操作 from selenium import webdriver from time import sleep driver=webdriver.Firefox() driver.get("http://localhost") #輸入用戶名 driver.find_element_by_name('username').clear() driver.find_element_by_name('username').send_keys('51zxw') #輸入密碼 driver.find_element_by_name('password').clear() driver.find_element_by_name('password').send_keys('123456') #點(diǎn)擊登陸 driver.find_element_by_name('Submit').click() sleep(3) #退出 driver.find_element_by_link_text('退出').click() sleep(2) driver.switch_to_alert().accept() sleep(3) driver.quit() 模塊化驅(qū)動測試線性模型雖然每個(gè)用例都可以拿出來獨(dú)立運(yùn)行,但是用例之間重復(fù)代碼很多,開發(fā)、維護(hù)成本高。其實(shí)把重復(fù)的操作代碼封裝為獨(dú)立的公共模塊,當(dāng)用例執(zhí)行時(shí)需要用到這部分,直接調(diào)用即可,這就是模塊驅(qū)動的方式。比如登錄系統(tǒng)、退出登錄、截圖函數(shù)等等。 from selenium import webdriver from time import sleep class Login(): def user_login(self,driver): driver.find_element_by_name('username').clear() driver.find_element_by_name('username').send_keys('51zxw') driver.find_element_by_name('password').clear() driver.find_element_by_name('password').send_keys('123456') driver.find_element_by_name('Submit').click() def user_logout(self,driver): driver.find_element_by_link_text('退出').click() sleep(2) driver.switch_to_alert().accept() if __name__=='__main__': driver = webdriver.Firefox() driver.get("http://localhost/") driver.implicitly_wait(10) Login().user_login(driver) Login().user_logout(driver) 調(diào)用登錄模塊 from LoginClass import * driver = webdriver.Firefox() driver.get("http://localhost/") driver.implicitly_wait(10) Login().user_login(driver) Login().user_logout(driver) 數(shù)據(jù)驅(qū)動測試模塊驅(qū)動的模型雖然解決了腳本的重復(fù)問題,但是需要測試不同數(shù)據(jù)的用例時(shí),模塊驅(qū)動的方式就不很適合了。 數(shù)據(jù)驅(qū)動就是數(shù)據(jù)的改變從而驅(qū)動自動化測試的執(zhí)行,最終引起測試結(jié)果的改變。 裝載數(shù)據(jù)的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是實(shí)現(xiàn)數(shù)據(jù)和腳本的分離。 from selenium import webdriver from time import sleep class Login(): def user_login(self,driver,username,password): driver.find_element_by_name('username').clear() driver.find_element_by_name('username').send_keys(username) driver.find_element_by_name('password').clear() driver.find_element_by_name('password').send_keys(password) driver.find_element_by_name('Submit').click() def user_logout(self,driver): driver.find_element_by_link_text('退出').click() sleep(2) driver.switch_to_alert().accept() 數(shù)據(jù)驅(qū)動調(diào)用——實(shí)現(xiàn)多個(gè)賬戶登錄 from LoginClass_Para import * from selenium import webdriver from time import sleep driver=webdriver.Firefox() driver.get("http://localhost") driver.implicitly_wait(10) Login().user_login(driver,"51zxw",'123456') sleep(3) Login().user_logout(driver) Login().user_login(driver,"51zxwPro",'123456') sleep(5) Login().user_logout(driver) 關(guān)鍵字驅(qū)動測試通過關(guān)鍵字的改變引起測試結(jié)果的改變叫關(guān)鍵字驅(qū)動測試。 selenium IDE也是一種傳統(tǒng)的關(guān)鍵字驅(qū)動的自動化工具,Robot Framework 是一個(gè)功能更強(qiáng)大的關(guān)鍵字驅(qū)動測試框架 |
|