一.设计测试用例
1.分析我之前写的登录脚本:
1from selenium import webdriver 2import time 3from selenium.webdriver.common.action_chains import ActionChains 4from selenium.webdriver.support.ui import WebDriverWait 5 6url = 'http://www.maiziedu.com/' 7login_path = '/html/body/div[2]/div/div/div/div/a[2]' 8account = 'xxx' #这里需填实际的账号 9pwd = 'maizi123456' #预先设定好网址和账号密码 10 11def get_ele_times(driver,times,func): 12 return WebDriverWait(driver,times).until(func) #等待方法 13 14def login_test(): 15 driver = webdriver.Firefox() #open firefox 16 driver.get(url) #打开url 17 time.sleep(1) 18 driver.maximize_window() #最大化窗口 19 20 ele_login = get_ele_times(driver,10,\ 21 lambda driver:driver.find_element_by_xpath(login_path)) 22 ele_login.click() #找到登录,然后点击 23 #相当于:driver.find_element_by_link_text(login_text).click() 24 25 26 account_ele = driver.find_element_by_xpath('//*[@id="id_account_l"]') 27 account_ele.send_keys('') 28 account_ele.send_keys(account) 29 30 password_ele = driver.find_element_by_xpath('//*[@id="id_password_l"]') 31 password_ele.send_keys('') 32 password_ele.send_keys(pwd) 33 34 driver.find_element_by_xpath('//*[@id="login_btn"]').click() 35 try: 36 driver.find_element_by_link_text('该账号不正确') 37 print ("ACCOUNT AND PWD ERROR!") 38 except: 39 print ("ACCOUNT AND PWD RIGHT!") 40 41if __name__ == '__main__': 42 login_test()

2.分析脚本功能是否可以模块化

3.模块化与数据隔离

4.修改后的模型

二.测试用例模块化

2.模块化的代码:
1from selenium import webdriver 2import time 3from selenium.webdriver.common.action_chains import ActionChains 4from selenium.webdriver.support.ui import WebDriverWait 5 6url = 'http://www.maiziedu.com/' 7login_xpath = '/html/body/div[2]/div/div/div/div/a[2]' 8account = 'XXX' 9pwd = 'maizi123456' #预先设定好网址和账号密码 10 11def openBrower(): #配置浏览器 12 webdriver_handle = webdriver.Firefox() 13 return webdriver_handle 14 15def openUrl(handle,url): #打开url 16 handle.get(url) 17 18def get_ele_times(driver,times,func): 19 return WebDriverWait(driver,times).until(func) #等待方法 20 21def findElement(driver,arg): 22 ''' 23 arg must be dict 24 1.user_xpath:用户名 25 2.pwd_xpath:密码 26 3.login_xpath:登录按钮 27 return useEle,pwdEle,loginEle 28 ''' 29 30 useEle = driver.find_element_by_xpath(arg['user_xpath']) 31 pwdEle = driver.find_element_by_xpath(arg['pwd_xpath']) 32 loginEle = driver.find_element_by_xpath(arg['login_xpath']) 33 return useEle,pwdEle,loginEle 34 35def sendVals(eletuple,arg): 36 ''' 37 ele tuple 38 account:uname,pwd 39 ''' 40 listkey = ['uname','pwd'] 41 i = 0 42 for key in listkey: 43 eletuple[i].send_keys('') 44 eletuple[i].clear() 45 eletuple[i].send_keys(arg[key]) 46 i+=1 47 eletuple[2].click() 48def checkResult(driver,text): 49 try: 50 driver.find_element_by_link_text(test) 51 print ("ACCOUNT AND PWD ERROR!") 52 except: 53 print ("ACCOUNT AND PWD RIGHT!") 54 55def login_test(): 56 driver = openBrower() 57 openUrl(driver,url) 58 driver.maximize_window() 59 ele_login = get_ele_times(driver,10,lambda driver:driver.find_element_by_xpath(login_xpath)) 60 ele_login.click() 61 #字典 62 ele_dict = {'user_xpath':'//*[@id="id_account_l"]',\ 63 'pwd_xpath':'//*[@id="id_password_l"]','login_xpath':'//*[@id="login_btn"]'} 64 account_dict = {'uname':account,'pwd':pwd} 65 66 ele_tuple = findElement(driver,ele_dict) #接收字典的值 67 68 sendVals(ele_tuple,account_dict) 69 checkResult(driver,'该账号不正确') 70 driver.find_element_by_link_text('退出').click() 71 72if __name__ == '__main__': 73 login_test()