思路
将页面操作与用例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 、测试数据进行整理存放
原文发布在 软件羊皮卷 微信公众号中,欢迎大家关注