首页 > 其他分享 >ddt数据驱动在ui自动化中的应用一【多测师】

ddt数据驱动在ui自动化中的应用一【多测师】

时间:2022-10-26 12:33:08浏览次数:71  
标签:多测师 self driver ddt ui sheet dict page def

import xlrd
from selenium import webdriver
import ddt
import time
import unittest

class Excel(object):

def __init__(self,excel_path,sheet_name):
self.excel_file=xlrd.open_workbook(excel_path)
self.sheet =self.excel_file.sheet_by_name(sheet_name)
self.sheet_name =self.sheet.name
self.rows = self.sheet.nrows
self.cols = self.sheet.ncols

"""返回单元格,计数(0,0)表示第一行,第一列的单元格"""
def get_sheet_data(self,row,col):
test_data = self.sheet.cell(row ,col).value

"""读取excel,并处理数据返回"""
def read_excel(self):
list=[]
for row in range(2,self.rows):
lists=self.sheet.row_values(row)[:self.cols]
list1=[]
dict={}
for j in range(self.cols):

list1.append(lists[j].encode('utf-8'))

dict['order_currency']=list1[0].decode('utf-8')
dict['order_amount']=list1[1].decode('utf-8')
dict['DFSXml']=list1[2].decode('utf-8')
dict['card_number']=list1[3].decode('utf-8')
dict['secureCode']=list1[4].decode('utf-8')
list.append(dict)
return list


class Base(object):
def __init__(self,driver):
self.driver = driver
def by_xpath(self,xpath):
return self.driver.find_element_by_xpath(xpath)

def by_id(self,id):
return self.driver.find_element_by_id(id)

def inputText(self,ele,text):
ele.clear()
ele.send_keys(text)

def getTitle(self):
return self.driver.current_url


def run(browser,secureCode,order_currency,order_amount,card_number,DFSXml):
browser.get("https://dfs.oceanpayment.com/pages/testPay.html")
page = Base(browser)
page.inputText(page.by_id("secureCode"), secureCode)
page.inputText(page.by_id("order_currency"),order_currency)
page.inputText(page.by_id("order_amount"), order_amount)
js_bom = "document.documentElement.scrollTop=500"
browser.execute_script(js_bom)
page.inputText(page.by_id("order_number"),card_number)
jsToTop ="document.documentElement.scrollTop=-500"
browser.execute_script(jsToTop)
page.inputText(page.by_id("DFSXml"),DFSXml)
page.by_id("btnAdd").click()
alert = browser.switch_to_alert()
alert.accept()
time.sleep(5)
print(page.getTitle())

@ddt.ddt
class TestRun(unittest.TestCase):

path=r"E://Card.xlsx" #windows 保存excel文件的路径,需要更改根据存放位置
st_name='Diners' # excel sheet 名称不变不改
test_data= Excel(path,st_name).read_excel()
def setUp(self):
opt= webdriver.ChromeOptions()
opt.add_argument('--start-maximized')
driver=webdriver.Chrome(options=opt)
driver.implicitly_wait(10)
self.driver=driver
def tearDown(self):
self.driver.close()
@ddt.data(*test_data)
def test_pay(self,dict):
run(self.driver,dict["secureCode"],dict["order_currency"],dict["order_amount"],dict["card_number"],dict['DFSXml'])


if __name__ == '__main__':
unittest.main()

 



标签:多测师,self,driver,ddt,ui,sheet,dict,page,def
From: https://blog.51cto.com/u_15846941/5797808

相关文章