思路
將頁面操作與用例case分別封裝,編寫case時就可以用同一個操作方法對應多個case
如下圖:
PageGUI:存放頁面操作方法,每個頁面寫一個檔案,每個檔案中寫同一個頁面不同的操作,例如檢索、排序等
case:存放自動化用例,主要是引用PageGUI中封裝的方法,傳入不同的引數達到對應不同case的目的
以 部落格園 後臺登陸畫面為例:
loginGUI.py
1 # coding = utf-8 2 from selenium import webdriver 3 4 5 class loginGUI: 6 def login(self,driver,username,password,autoLogin_checkbox=None): 7 8 # GUI中定位所需元素 9 dr = self.get_driver(driver) 10 username_element = dr.find_element_by_id('input1') 11 password_element = dr.find_element_by_id('input2') 12 autoLogin_checkbox_element = dr.find_element_by_id('remember_me') 13 login_btn = dr.find_element_by_id('signin') 14 15 # 執行步驟 16 username_element.send_keys(username) 17 password_element.send_keys(password) 18 self.checkBox_operation(autoLogin_checkbox_element,autoLogin_checkbox) 19 login_btn.click() 20 21 # 判斷 下次自動登入 傳的值是否正確 22 def checkBox_operation(self,autoLogin_checkbox_element,autoLogin_checkbox): 23 if autoLogin_checkbox == True: 24 if autoLogin_checkbox_element.is_selected() == False: # 判斷是否被選中 25 return autoLogin_checkbox_element.click() 26 27 elif autoLogin_checkbox == False or autoLogin_checkbox == None: 28 if autoLogin_checkbox_element.is_selected() == True: # 判斷是否被選中 29 return autoLogin_checkbox_element.click() 30 else: 31 return None 32 33 def get_driver(self,driver): 34 url= 'https://passport.cnblogs.com/user/signin' 35 36 if driver == 'chrome': 37 driver = webdriver.Chrome() 38 elif driver == 'edge': 39 driver = webdriver.Edge() 40 else: 41 driver = webdriver.Safari() 42 43 driver.get(url) 44 driver.implicitly_wait(10) 45 return driver
Testlogin.py
1 from PageGUI import loginGUI 2 import unittest 3 import time 4 5 6 class TestCase(unittest.TestCase): 7 def test_login(self): 8 login = loginGUI() 9 login.login(driver='chrome',username='123',password='345',autoLogin_checkbox=1) 10 time.sleep(3) 11 12 def test_login_usernameError(self): 13 pass 14 15 def test_login_passwordError(self): 16 pass 17 18 19 if __name__ == '__main__': 20 unittest.main()
以上只是對case的對應
更多的可以將 driver 、測試資料進行整理存放
原文釋出在 軟體羊皮卷 微信公眾號中,歡迎大家關注