數據驅動ddt+excel數據讀取


我們可以將測試數據用excel存儲,再用ddt去傳入,不過我們需要安裝對應的庫,因為python是無法操作excel的

1.安裝第三方庫xlrd

2.創建一個excel表格,將需要測試的數據保存

3.封裝讀取excel

# coding:utf-8
import xlrd
class ExcelUtil():
def __init__(self, excelPath, sheetName="Sheet1"):
self.data = xlrd.open_workbook(excelPath)
self.table = self.data.sheet_by_name(sheetName)
# 獲取第一行作為key值
self.keys = self.table.row_values(0)
# 獲取總行數
self.rowNum = self.table.nrows
# 獲取總列數
self.colNum = self.table.ncols
def dict_data(self):
if self.rowNum <= 1:
print("總行數小於1")
else:
r = []
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 = "data_excel"
#sheetName = "Sheet1"
data = ExcelUtil(filepath)
print data.dict_data()
for i in data.dict_data():
print i

4.ddt和excel結合

from selenium import webdriver
from common.base import BasePage
from page.page_login import LoginPage,login_url
from common.read_excel_ddt import ExcelUtil
import unittest
import ddt

#用excle表格傳入
filepath="data_excel.xlsx"
data=ExcelUtil(filepath)
datadict=data.dict_data()
print datadict

@ddt.ddt
class Login_test(unittest.TestCase):
'''登錄頁面的測試用例'''

@classmethod
def setUpClass(cls):
#只打開一次瀏覽器
cls.driver=webdriver.Firefox()
#實例化page_login中的LoginPage類
cls.login_driver=LoginPage(cls.driver)
cls.driver.open(login_url)

def setUp(self):
#每次都從登錄頁開始
self.driver.get(login_url)

def tearDown(self):
#每次清空登錄的cookie,數據還原
self.driver.delete_all_cookies()
@classmethod
def tearDownClass(cls):
#關閉瀏覽器
cls.driver.quit()

def login_case(self,user,psw,exc):
'''登錄的流程'''
self.login_driver.input_username(user)
self.login_driver.input_password(psw)
self.login_driver.click_submit()
result=self.login_driver.is_login_sucess()#獲取結果
#如果用excel的話 由於返回的是0,1所以需要用bool
except_result=bool(exc)
self.assertEqual(result,except_result)#斷言


   @ddt.data(*datadict)#把excel中的數據挨個傳入
def test_login_01(self,data):
'''登陸失敗用例:輸入正確的賬戶,錯誤的密碼'''
     self.login_case(data["username"],data["psw"],data["expect"])
    def test_login_02(self,data):
'''登陸失敗用例:輸入正確的賬戶,正確的密碼'''
    self.login_case(data["username"],data["psw"],data["expect"])

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM