一、環境準備
1、安裝xlrd

2、安裝ddt
二、資料驅動原理
1、測試資料為多個字典的list類型
2、測試類前面加@ddt.ddt修飾
3、case前加@ddt.data()修飾
4、用例會單獨運作多次(取決于測試資料的個數)
三、舉例說明(此例子基于上文python+selenium Page Object 設計模式+Unittest單元測試架構)https://blog.csdn.net/weixin_42228683/article/details/102231182
1、方法一
test_case.py
# Author:Xueyun
# -*- coding:utf-8 -*-
import unittest
import ddt
from po.login_page import LoginPage
from selenium import webdriver
'''測試資料'''
test_data = [{"username": "zhangsan", "password": "zhangsan"},
{"username": "lisi", "password": "lisi"},
{"username": "wangwu", "password": "wangwu"},
]
@ddt.ddt
class Case01(unittest.TestCase):
''''登入樂學'''
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30)
self.url = "http://www.5itest.cn/login"
# self.username = "18328379237"
# self.password = "123456"
#用例執行體
@ddt.data(*test_data)
def test_login_lexue(self, data):
#聲明登入頁面類對象
login_page = LoginPage(self.driver,self.url,u"樂學")
#調用打開頁面元件
login_page.open()
#調用使用者名輸入元件
login_page.input_username(data["username"])
#調用輸入密碼元件
login_page.input_password(data["password"])
#調用點選登入按鈕元件
login_page.click_submit()
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
2、方法二
①首先要知道,如何讀取excel表格的資料
read_excel.py
import xlrd
class ReadExcel:
def __init__(self, excel_path, sheet_name):
#打開excel表格
self.data = xlrd.open_workbook(excel_path)
#通過清單名字擷取
self.table = self.data.sheet_by_name(sheet_name)
#擷取第一行key值
self.keys = self.table.row_values(0)
#擷取總行數
self.rownum = self.table.nrows
#擷取總列數
self.colnum = self.table.ncols
def dict_data(self):
#判斷總行數不小于1
if self.rownum <= 1:
print("總行數小于1")
else:
#定義一個空清單來存放表格中的資料
r = []
#初始化j,從第二行開始取資料
j = 1
#利用循環讀取表格中的資料
for i in range(self.rownum - 1):
s = {}
#從第二行取對應的values值
values = self.table.row_values(j)
for x in range(self.colnum):
s[self.keys[x]] = values[x]
r.append(s)
j += 1
return r
if __name__ == '__main__':
filepath = "test.xls"
sheetname = "Sheet1"
data = ReadExcel(filepath, sheetname)
print(data.dict_data())
②将讀取excel資料與測試用例結合
test_case02.py
# Author:Xueyun
# -*- coding:utf-8 -*-
import unittest
import ddt
from exceldata import read_excel
from po.login_page import LoginPage
from selenium import webdriver
'''測試資料'''
filepath = "E:\\Pycharm_projects\\1\\exceldata\\test.xls"
sheetname = "Sheet1"
exce_data = read_excel.ReadExcel(filepath, sheetname)
test_data = exce_data.dict_data()
@ddt.ddt
class Case01(unittest.TestCase):
''''登入樂學'''
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30)
self.url = "http://www.5itest.cn/login"
# self.username = "18328379237"
# self.password = "123456"
#用例執行體
@ddt.data(*test_data)
def test_login_lexue(self, data):
#聲明登入頁面類對象
login_page = LoginPage(self.driver,self.url,u"樂學")
#調用打開頁面元件
login_page.open()
#調用使用者名輸入元件
login_page.input_username(data["username"])
#調用輸入密碼元件
login_page.input_password(data["password"])
#調用點選登入按鈕元件
login_page.click_submit()
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
注意:将表格中的資料設定成文本
③執行結果