python UI自動化實戰記錄六:頁面1用例編寫
阿新 • • 發佈:2019-01-13
使用python自帶的unittest測試框架,用例繼承自unittest.TestCase類。
1 引入介面類和頁面類
2 setUp函式中開啟頁面,定義介面物件
3 tearDown函式中關閉頁面
4 test打頭的函式都是用例。因頁面和介面的相關方法都已封裝好,所以用例會比較簡潔。
5 當一個用例需根據引數不同執行多次時,可使用ddt資料驅動,或unittest自帶的subTest。
# coding:utf-8 """ 首頁相關用例 """ from apiclass.api_fund import Fund from pageclass.index importIndexPage from pageclass.strategy import StrategyPage from common.launch_browser import launch_browser import unittest from ddt import ddt,data @ddt class IndexPageTest(unittest.TestCase): @classmethod def setUpClass(cls): sso = "sso串" driver = launch_browser('chrome') # 啟動瀏覽器cls.page = IndexPage(driver) # 例項化首頁頁面物件 cls.page.open_index_page(sso) # 開啟首頁 cls.fund = Fund() # 介面物件 @classmethod def tearDownClass(cls): cls.page.closepage() def test01_check_mystyle(self): """驗證首頁風險等級與tips裡的一致""" result = self.page.check_mystyle() self.assertTrue(result,"頁面風險等級與tips裡的不一致") def test02_default_style(self): """驗證頁面預設策略與使用者風險等級一致""" result = self.page.check_default_ismystyle() self.assertTrue(result,"頁面預設策略與使用者風險等級不一致") def test03_default_data(self): """驗證預設策略的資料正確性""" self.check_levels_data() @data(*range(5)) def test04_choose_style(self,styleindex): """驗證各策略風格的資料正確性""" with self.subTest('choose_style_%s'%styleindex): #建立測試子項,一次迴圈fail會繼續執行下一次迴圈 self.page.choose_style(styleindex) #選擇style self.assertTrue(self.page.check_SelectEqCurrent(),"所選風格與顯示的風格不一致") self.check_levels_data() def test05_click_btn(self): """驗證點選檢視策略按鈕,跳轉頁面風格與所點選風格一致""" driver,data_code_index = self.page.clicklink_read_strategy() # 返回的是策略頁面和code newpage= StrategyPage(driver) # 點選之後成了策略頁面物件 newpage.get_strategyinfo()# 驗證策略頁面的型別與點選的一致 self.assertEqual(data_code_index,newpage.strategycode,"點選的策略與跳轉後的策略code不一致") def check_levels_data(self): """比較各level資料與介面資料是否一致""" for levelindex in range(3): # 驗證右側三個level資料正確性 with self.subTest(('check_level_data:level%s') % (levelindex + 1)): self.page.get_level_info(levelindex) # 迴圈獲取右側的資訊 self.fund.get_fund_strategy(self.page.data_code, latest=-1) # 獲取介面策略資訊 self.fund.get_fund_percentM3(self.page.data_code) # 獲取3個月收益率 actual_result = [self.page.data_code, self.page.percentM3, self.page.name, self.page.description] # 實際結果 expect_result = [self.fund.code, self.fund.percentM3, self.fund.name, self.fund.summary] # 預期結果 self.assertEqual(actual_result, expect_result, "首頁資料和介面資料不一致") if __name__ == '__main__': unittest.main()