首页 > 其他 > 详细

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

时间:2020-06-12 21:18:37      阅读:53      评论:0      收藏:0      [点我收藏+]
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()

 

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

原文:https://www.cnblogs.com/xiaoshubass/p/13110065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!