1、讀取Excel文件
安裝xlrd庫,調用xlrd庫去讀取文件並返回數據
import xlrd
class ReadExcel:
@staticmethod
def get_data():
# 創建一個空的List
row_list = []
# 打開工作簿
book = xlrd.open_workbook("C:\\Users\\Think\\Desktop\\test_python_data.xlsx")
# 獲取第一個sheet
'''
1、sheet.nrows: 工作表中有值總行數
2、sheet.ncols:工作表中有值總列數
3、sheet.row_values(rowx, start_colx=0, end_colx=None):
返回給定行中單元格值的一部分(開始行,開始列默認是0,結束列)
'''
sheet = book.sheet_by_index(0)
for i in range(1, sheet.nrows):
row_value = sheet.row_values(i, 0, sheet.ncols-1)
row_list.append(row_value)
return row_list
# if __name__ == '__main__':
# ReadExcel().get_data()
2、使用ddt庫中的@data解析數據,如下簡單示例:
import unittest
from ddt import ddt,data,unpack
from src.utils.ReadExcel import ReadExcel
@ddt
class Testddt2(unittest.TestCase):
def setUp(self):
pass
'''
*的作用類似於將原始數據的最外層括號拿掉,例如我們的原始數據是:
[['123456', 111], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']]
加上*之后變成:
['123456', 111], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']
然后可使用@unpack讀取值,參數兩位,運行結果:
15210 111
111 aaa
123458 aaa
123459 aaa
'''
#調用ReadExcel類中的get_data()方法獲取數據
@data(*ReadExcel().get_data())
@unpack
def test_1(self, username, password, message):
print()
print(username, password, message)
'''
不加*,不拆包時運行結果:
[['123456', 111.0], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']]
'''
@data(ReadExcel().get_data())
def test_2(self, value):
print()
print("---test_2---")
print(value)
'''
不加*,使用@unpack時,運行結果:
['123456', 111.0] ['111', 'aaa'] ['123458', 'aaa'] ['123459', 'aaa']
'''
@data(ReadExcel().get_data())
@unpack
def test_3(self, value1, value2, value3, value4):
print()
print("---test_3---")
print(value1, value2, value3, value4)
3、實際項目中使用:
from src.pages.LoginPage import LoginPage
from selenium import webdriver
from time import sleep
import unittest
from src.utils.ReadExcel import ReadExcel
from ddt import ddt, data, unpack
'''
1、使用數據驅動模式,測試用戶登錄測試用例
2、測試模板Excel
'''
@ddt
class TestLoginCaseDataDrive(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.url = "http://mail.163.com/"
# 打開瀏覽器
LoginPage(self.driver).open_browser(self.url)
sleep(1)
'''
1、讀取ReadExcel類中的get_data(),獲取數據
2、將獲取到的數據進行拆包,並根據數據個數傳參數
3、test_login根據參數個數,運行多次(根據邏輯說明的)
'''
@data(*ReadExcel().get_data())
@unpack
def test_login(self, username, password, expect_message):
print(username,password,expect_message)
LoginPage(self).login_operation(username, password)
# 定位錯誤提示消息,設置斷言
actual_message = self.driver.find_element_by_xpath("//div[@class='ferrorhead']")
print(actual_message.text)
self.assertEqual(actual_message.text, expect_message, msg="測試失敗!")
print("測試成功!")
def tearDown(self):
self.driver.quit()
4、簡單的Excel數據格式

5、生成測試報告
做測試所以將pattern改成了pattern='TestLoginCaseDataDrive.py',只測試當前文件,運行結果如下:
