1. 程式人生 > 其它 >selenium--- 資料驅動測試 ddt

selenium--- 資料驅動測試 ddt

      通過使用資料驅動測試的方法,可以在需要驗證多組資料的測試場景中,使用外部資料來源實現對輸入值和期望值的引數化,從而避免在測試中僅使用硬編碼的資料。將測試資料和測試指令碼分離開,使得測試指令碼在不同資料集合下高度複用。

 

     使用方法

      在測試類上使用@ddt裝飾符, 在測試方法上使用@data裝飾符。  @data裝飾符把引數當作測試資料,引數可以是單個值、列表、元組、字典。對於列表,需要用@unpack裝飾符把元組和列表解析成多個引數。     

 @ddt.data(("phones",2),("music",5))
 @unpack
 def test_search(self,search_value,expected_count):

  使用外部資料的資料驅動測試

        1.通過CSV獲取資料

 

 

import csv,unittest
from ddt import ddt,data,unpack
from selenium import webdriver

def get_data(file_name):
    rows =[]
    data_file = open(file_name,"rb")
    reader = csv.reader(data_file)
    #skip the headers
    next(reader,None)
    for row in reader:
        rows.append(row)
    
return rows @ddt class SearchCsvDDT(unittest.TestCase): ....... #get the data from specified csv file by calling the get_data function @data(*get_data("testdata.csv")) @unpack def test_search(self,search_value,expected_count): ...........

   2.通過excel獲取資料

 

 

import xlrd,unittest
from ddt import ddt,data,unpack from selenium import webdriver def get_data(file_name): rows =[] book = xlrd.open_workbook(file_name) sheet = book.sheet_by_index(0) for row_idx in range(1,sheet.nrows): rows.append(sheet.row_values(row_idx,0,sheet.ncols)) return rows @ddt class SearchExcelDDT(unittest.TestCase): ....... #get the data from specified excel file by calling the get_data function @data(*get_data("testdata.csv")) @unpack def test_search(self,search_value,expected_count): ...........

  @data將呼叫get_data()方法去讀取外部Excel檔案,並將資料逐行返回給@data

如果要從資料庫中獲取資料,也可以修改get_data()方法,通過DB相關的庫來連線資料庫、SQL查詢來獲取測試資料