在接口測試中,一個接口每每須要有多組數據進行測試,以驗證接口的正確性。這樣就涉及到一個問題,是否是須要編寫多個測試用例來實現呢?好比一個登錄接口,登錄成功的一組數據、登錄密碼錯誤的一組數據、登錄帳號錯誤的一組數據。那咱們要怎麼操做呢?數據驅動就能夠很好的解決該問題。只須要編寫一個測試用例腳本,經過傳入不一樣的數據,返回不一樣的測試結果。
python
python中實現數據驅動是經過引入ddt模塊來實現的。沒有安裝的,直接安裝改模塊便可。api
import ddt微信
使用數據驅動時,須要在測試的模塊上進行聲明。在具體的測試方法上使用ddt.data()方法或者ddt.file_data()進行參數傳遞。app
ddt.data()默認將參數都傳遞給第一個參數,每一組數據執行一遍測試用例,以達到數據驅動的效果。若是傳遞多個參數時需要用到ddt.unpack 聲明進行拆分。測試
案例以下:spa
import ddtimport unittestimport ReadExcel
testData =ReadExcel.ReadExcel.readExcel("E:\\study\\data\\test_ddt.xls", "Sheet1")class DDTtest(unittest.TestCase): @ddt.data([1,2],[3,4]) #數據參數 def test_A(self,a,b): print(a+b)
def test_B(self,a): print(a) def test_C(self,a): print(a)
@ddt.data(*testData) #讀取Excel文件進行傳遞,這裏必須是迭代器 def test_D(self, data): print(data) print("執行完成") return
if __name__=="__main__": unittest.main();
import xlrd#讀取Excel的方法class ReadExcel(): def readExcel(fileName,SheetName="Sheet1"): data = xlrd.open_workbook(fileName) table = data.sheet_by_name(SheetName)
#獲取總行數、總列數 nrows = table.nrows ncols = table.ncols if nrows > 1: #獲取第一行的內容,列表格式 keys = table.row_values(0) #print(keys)
listApiData = [] #獲取每一行的內容,列表格式 for col in range(1,nrows): values = table.row_values(col) # keys,values這兩個列表一一對應來組合轉換爲字典 api_dict = dict(zip(keys, values)) #print(api_dict) listApiData.append(api_dict) return listApiData else: return None
if __name__ == '__main__': s = ReadExcel.readExcel("E:\\study\\data\\test_ddt.xls","Sheet1") print(s)
本文分享自微信公衆號 - 軟件測試道與術(UTesting)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。.net