Python內置模塊CSV
使用with可以不用close檔案
讀取CSV檔案
import csv
# 讀取csv方式1
csvFile = open('csvData.csv', 'r')
reader = csv.reader(csvFile) # 回傳迭代型別
data = https://www.cnblogs.com/greensunit/p/[]
for item in reader:
print(item)
data.append(item)
print(data)
csvFile.close()
import csv
# 讀取csv方式2
data=https://www.cnblogs.com/greensunit/p/[]
with open('csvData.csv', 'r',encoding='utf-8') as csvfile:
reader2 = csv.reader(csvfile) # 回傳迭代型別
for item2 in reader2:
print(item2)
data.append(item2)
print(data)
import csv
# 讀取csv方式2
data=https://www.cnblogs.com/greensunit/p/[]
with open('csvData.csv', 'r',encoding='utf-8') as csvfile:
reader2 = csv.reader(csvfile) # 回傳迭代型別
for item2 in reader2:
print(item2)
data.append(item2)
print(data)
# 從串列寫入csv檔案
csvFile2=open('csvData2.csv', 'w',encoding='utf-8',newline='')
writer=csv.writer(csvFile2)
m=len(data)
for i in range(m):
writer.writerow(data[i])
csvFile2.close()
使用Excel進行資料驅動測驗
環境準備
- 安裝openpyxl
pip install openpyxl
- 測驗資料準備
新建“測驗資料.xlsx”,作業表名為“搜索資料表”的Excel檔案內容如下

'''
Excel工具類
'''
from openpyxl import load_workbook
class ParseExcel(object):
def __init__(self, excelPath, sheetName):
# 讀excel檔案
self.wb = load_workbook(excelPath)
# 通過作業表名稱獲取一個作業表物件
self.sheet = self.wb[sheetName]
# 獲取作業表中存在資料的區域的最大行號
self.maxRowNum = self.sheet.max_row
def getDataFromSheet(self):
# 存放從作業表中讀取出來的資料
dataList = []
'''
1.因為作業表中的第一行是標題行,所以需要去掉
2.遍歷作業表中資料區域的每一行
3.將每行各個單元的資料取出存于串列tmpList中
4.再將存放一行資料的串列添加到最終資料串列dataList中
'''
for line in self.sheet.rows:
tmpList = []
tmpList.append(line[1].value)
tmpList.append(line[2].value)
dataList.append(tmpList)
print(dataList[1:])
return dataList[1:]
if __name__ == '__main__':
excelPath = r'測驗資料.xlsx'
sheetName = '搜索資料表'
excel = ParseExcel(excelPath=excelPath, sheetName=sheetName)
print(excel.getDataFromSheet())
import unittest, time, logging, ddt
import traceback # 例外類
from selenium import webdriver
from ExcelUtil import ParseExcel
from selenium.common.exceptions import NoSuchElementException
# 初始化日志物件
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(filename)s [line:%(lineno)d] %(name)s %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='d://report.log',
filemode='w' # 是否追加寫入日志
)
excelPath = r'測驗資料.xlsx'
sheetName = '搜索資料表'
excel = ParseExcel(excelPath=excelPath, sheetName=sheetName)
print(excel.getDataFromSheet())
@ddt.ddt
class TestDemo(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
@ddt.data(*excel.getDataFromSheet())
def test_dataDriverByFile(self, data):
# 強制將data改變為元組型別
print('tuple(data)', tuple(data))
testData, expectData = https://www.cnblogs.com/greensunit/p/tuple(data)
print('testData', testData)
print('expectData', expectData)
time.sleep(3)
url = 'https://www.baidu.com'
self.driver.get(url)
self.driver.maximize_window()
self.driver.implicitly_wait(10)
try:
self.driver.find_element_by_id('kw').send_keys(testData)
self.driver.find_element_by_id('su').click()
time.sleep(2)
self.assertTrue(expectData in self.driver.page_source)
except NoSuchElementException:
# traceback.format_exc()是把例外堆疊以字串的形式回傳
logging.error('查找的頁面元素不存在,例外資訊:' + str(traceback.format_exc()))
except AssertionError as e:
logging.info("搜索-'%s',期望-'%s',-失敗" % (testData, expectData))
except Exception as e:
logging.info('未知錯誤,錯誤資訊:' + str(traceback.format_exc()))
else:
logging.info("搜索-'%s',期望-'%s',-通過" % (testData, expectData))
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278374.html
標籤:其他
上一篇:初識HTML02
