笨方法,每个测试用例都写一个方法
1 from selenium import webdriver 2 import unittest 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.common.by import By 5 from selenium.webdriver.support.ui import WebDriverWait 6 7 8 class loginTest(unittest.TestCase): 9 def setUp(self): 10 self.driver = webdriver.Firefox() 11 url = "------------" 12 self.driver.get(url) 13 14 # 封装用户登录 15 def user_login(self, username, password): 16 self.driver.find_element_by_id("username").send_keys(username) 17 self.driver.find_element_by_id("passwords").send_keys(password) 18 self.driver.find_element_by_css_selector(".ant-btn").click() 19 WebDriverWait(self.driver, 20,0.02).until(EC.presence_of_element_located ((By.XPATH, "//*[@id='root']/div/div[1]/div[2]/ul/li[1]/div"))) 20 21 def test_login1(self): 22 '''用户名、密码为空登录''' 23 self.user_login("", "") 24 25 def test_login2(self): 26 '''用户名为空,密码正确''' 27 self.user_login("", "真实密码") 28 29 def test_login3(self): 30 '''用户名正确,密码为空''' 31 self.user_login("真实账号名", "") 32 33 def test_login4(self): 34 '''用户名密码正确 ''' 35 self.user_login("真实账号名", "真实密码") 36 37 if __name__ == '__main__': 38 unittest.main()
硬编码数据驱动
1 # encoding = utf-8 2 from selenium import webdriver 3 import ddt,unittest 4 5 @ddt.ddt 6 class test(unittest.TestCase): 7 def setUp(self): 8 self.driver = webdriver.Firefox() 9 10 @ddt.data(["账号1","密码1"], 11 ["账号2","密码2"]) 12 @ddt.unpack # 这里估计每一条数据是一个元组,而测试函数明确需要接受两个参数,所以需要拆包处理 13 14 def test_login(self, testdata, expectdata): 15 url = "--------------------------" 16 self.driver.get(url) 17 self.driver.find_element_by_id("username").send_keys(testdata) 18 self.driver.find_element_by_id("passwords").send_keys(testdata) 19 self.driver.find_element_by_css_selector(".ant-btn").click() 20 21 def tearDown(self): 22 self.driver.quit() 23 24 if __name__ == '__main__': 25 unittest.main()
文件读取数据
思路:
1)设计测试数据
2)读取excel
3) 编写测试脚本
数据
从excel文件中读取数据
1 # encoding = utf-8 2 from openpyxl import load_workbook 3 4 class ParseExcel(object): 5 6 def __init__(self,excelPath,SheetName): 7 # 将要读取的excel加载到内存 8 self.wb = load_workbook(excelPath) 9 # 通过工作表名称获取工作表对象 10 self.sheet = self.wb.get_sheet_by_name(SheetName) 11 self.maxRowNum = self.sheet.max_row 12 13 def getDatasFromSheet(self): 14 # 用于存放从工作表中读出来的数据 15 dataList=[] 16 for line in self.sheet.rows[1:]: 17 print(line[0].value) 18 tmpList = [] 19 tmpList.append(line[1].value) 20 tmpList.append(line[2].value) 21 # tmpList.append(line[3].value) 22 dataList.append(tmpList) 23 return dataList 24 25 if __name__ == '__main__': 26 excelPath = "/Users/doudou/Desktop/搜索数据表.xlsx" 27 SheetName = "工作表1" 28 pe = ParseExcel(excelPath,SheetName) 29 for i in pe.getDatasFromSheet(): 30 print(i[0],i[1])
测试脚本
1 # encoding = utf-8 2 from selenium import webdriver 3 import unittest,time 4 import ddt,traceback 5 from excel.readExcel import ParseExcel 6 from selenium.common.exceptions import NoSuchElementException 7 8 9 excelPath = '/Users/doudou/Desktop/搜索数据表.xlsx' 10 SheetName = "工作表1" 11 # 创建ParseExcel类的实例对象 12 excel = ParseExcel(excelPath,SheetName) 13 14 @ddt.ddt 15 class TestDemo(unittest.TestCase): 16 17 def setUp(self): 18 self.driver = webdriver.Firefox() 19 20 @ddt.data(*excel.getDatasFromSheet()) 21 def test_dataDrivenByFile(self,data): 22 testData,expectData = tuple(data) 23 url = "http://www.baidu.com" 24 self.driver.get(url) 25 self.driver.maximize_window() 26 time.sleep(5) 27 print(testData, expectData) 28 29 try: 30 self.driver.find_element_by_id("kw").send_keys(testData) 31 self.driver.find_element_by_id("su").click() 32 time.sleep(3) 33 self.assertTrue(expectData in self.driver.page_source) 34 35 except NoSuchElementException as e: 36 print("查找的网页元素不存在:"+str(traceback.format_exc())) 37 38 except AssertionError as e: 39 print("搜索'%s',期望'%s',失败"%(testData,expectData)) 40 41 except Exception as e: 42 print("未知错误信息:"+str(traceback.format_exc())) 43 else: 44 print("搜索'%s'期望'%s通过" %(testData,expectData)) 45 46 def tearDown(self): 47 self.driver.quit() 48 49 if __name__ == '__main__': 50 unittest.main()
参考
https://www.jianshu.com/p/8479e6545186
from selenium import webdriver
import unittest
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
class loginTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
url = "------------"
self.driver.get(url)
# 封装用户登录
def user_login(self, username, password):
self.driver.find_element_by_id("username").send_keys(username)
self.driver.find_element_by_id("passwords").send_keys(password)
self.driver.find_element_by_css_selector(".ant-btn").click()
WebDriverWait(self.driver, 20,0.02).until(EC.presence_of_element_located ((By.XPATH, "//*[@id='root']/div/div[1]/div[2]/ul/li[1]/div")))
def test_login1(self):
'''用户名、密码为空登录'''
self.user_login("", "")
def test_login2(self):
'''用户名为空,密码正确'''
self.user_login("", "真实密码")
def test_login3(self):
'''用户名正确,密码为空'''
self.user_login("真实账号名", "")
def test_login4(self):
'''用户名密码正确 '''
self.user_login("真实账号名", "真实密码")
if __name__ == '__main__':
unittest.main()