selenium-數(shù)據(jù)驅(qū)動應(yīng)用(parameterized、DDT)_第1頁
selenium-數(shù)據(jù)驅(qū)動應(yīng)用(parameterized、DDT)_第2頁
selenium-數(shù)據(jù)驅(qū)動應(yīng)用(parameterized、DDT)_第3頁
selenium-數(shù)據(jù)驅(qū)動應(yīng)用(parameterized、DDT)_第4頁
selenium-數(shù)據(jù)驅(qū)動應(yīng)用(parameterized、DDT)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

selenium-數(shù)據(jù)驅(qū)動應(yīng)?(parameterized、DDT)1.parameterizedparameterized是python的?個參數(shù)化庫,同時?持unittest、nose、pytest單元測試框架importunittestimporttimefromseleniumimportwebdriverfromparameterizedimportparameterizedclassTestBaidu(unittest.TestCase):#參數(shù)化后,要將setup和teardown修改為類?法,不然每個參數(shù)被認為?個測試?例,瀏覽器會隨之每次都打開關(guān)閉@classmethoddefsetUpClass(cls):cls.driver=webdriver.Chrome()cls.base_url=''defbaidu_search(self,search_key):self.driver.get(self.base_url)self.driver.find_element_by_id('kw').send_keys(search_key)self.driver.find_element_by_id('su').click()time.sleep(3)#通過parameterized實現(xiàn)參數(shù)化@parameterized.expand([#每個元組都被認為是?條測試?例。測試?例中,通過參數(shù)來取每個元組中的數(shù)據(jù)('case1','selenium'),('case2','unittest'),('case3','parameterized'),])deftest_search(self,name,search_key):#name對應(yīng)元組中的第?列數(shù)據(jù),search_key對應(yīng)第?列self.baidu_search(search_key)self.assertEqual(self.driver.title,search_key+'_百度搜索')@classmethoddeftearDownClass(cls):cls.driver.quit()if__name__=='__main__':unittest.main(verbosity=2)#verbosity設(shè)置為2,表?輸出更詳細的?志運?結(jié)果如下:test_search_0_case1(__main__.TestBaidu)...oktest_search_1_case2(__main__.TestBaidu)...oktest_search_2_case3(__main__.TestBaidu)...ok----------------------------------------------------------------------Ran3testsin15.239sOKtest_search是測試?例的名稱,參數(shù)化會?動加上0、1、2?來區(qū)分每條測試?例,元組中的case1后綴在名稱上2.DDTDDT(data-driventests)是針對unittest單元測試框架設(shè)計的擴展庫。允許使?不同的測試數(shù)據(jù)來運??個測試?例,并將其展?為多個測試?例。fromseleniumimportwebdriverimportunittestimporttimefromddtimportddt,data,file_data,unpack@ddt#測試類需要通過@ddt裝飾器進?裝飾classTestBaidu(unittest.TestCase):@classmethoddefsetUpClass(cls):cls.driver=webdriver.Chrome()defsearch_baidu(self,keyword):self.driver.get('')self.driver.find_element_by_id('kw').send_keys(keyword)self.driver.find_element_by_id('su').click()time.sleep(3)#ddt提供了不同形式的參數(shù)化@data(['case1','selenium'],['case2','python'])#列表@unpackdeftest_baidu1(self,name,keyword):print('第?組測試?例',name)self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')@data(('case1','selenium'),('case2','pyton'))#元組@unpackdeftest_baidu2(self,name,keyword):print('第?組測試?例',name)self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')@data({'keyword':'selenium'},{'keyword':'python'})#字典@unpackdeftest_baidu3(self,keyword):print('第三組測試?例',keyword)self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')@classmethoddeftearDownClass(cls):cls.driver.quit()if__name__=='__main__':unittest.main(verbosity=2)DDT同樣?持json?件的讀取,讓我們更關(guān)注于數(shù)據(jù)?件的內(nèi)容,及在測試?例中的使?。?不需要關(guān)?數(shù)據(jù)?件是如何被讀取進來的keyword.json使?json?件參數(shù)化測試?例@file_data('./data/keyword.json')#讀取json?件deftest_baidu(self,keyword):self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')測試結(jié)果如下:test_baidu_00001_case1(__main__.TestBaidu)test_baidu_00001_case1...oktest_baidu_00002_case2(__main__.TestBaidu)test_baidu_00002_case2...oktest_baidu_00003_case3(__main__.TestBaidu)test_baidu_00003_case3...FAILps:參數(shù)化中使?全局變量需注意,如果全局變量的賦值和使?在同?個?件中,則不能使?原因:代碼執(zhí)?順序執(zhí)?時,先?parameterized中的代碼,后?業(yè)務(wù)代碼,所以全局變量的值在賦值之前已經(jīng)獲取,為空,會報錯,如下123為執(zhí)?順序:classTest_0001(TestBase):deftest_1(self):phone=123set_assistant_phone_id(phone)#2classTest_0011(TestBase):@parameterized.expand([('隨機?機號',get_assistant_phone_id())#1先執(zhí)?。還未賦值,所以獲取不到數(shù)據(jù)])deftest

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論