資料驅動的思想在於引數與引數名的對應關係,一對一,多對多,然後對資料進行拆分
第一步,導包這裡要用到ddt,data,unpack
先講一下unpack的作用就是拆分,要不然資料就是乙個整體
from ddt import ddt, data, unpack
注意看清楚@data裡面的內容:
,
@data(,)
@unpack
deftest_01
(self,name,password)
:print
(name)
print
(password)
此時這是兩個單字典,這個時候要注意引數名要和字典的鍵值對應來讀取,此時結果應該為
1
1112
222
注意這是如果@data變成了
@data([,])
多了列表巢狀
@data([,
])deftest_01
(self,name,password)
:print
(name)
print
(password)
如果還是和之前一樣讀取的話結果就變成了
這樣就不好搞了,他就是乙個單列表了不能再拆分就失去了引數化的效果
接著看後面有字典形式怎麼操作。
引數化總不能手寫吧,肯定要讀取檔案
搞乙個execl檔案
# 第一行是標題
title=datalist[0]
data=datalist[1:
]return data
這是搞成了列表形式
[
['1'
,'111'],
['2'
,'222'],
['3'
,'333'
]]
如何引入呢?這裡*表示所有資料
@data(
*read(
).readexecl(
'data_execl'))
@unpack
deftest_01
(self,name,password)
:print
(name,password)
如果寫檔案讀取的時候不小心搞成了字典形式呢?
def
readexecl1
(self,filename)
: path=os.path.abspath(
'..')+
'/'+
'data'
+'/'
+filename+
'.xlsx'
work=xlrd.open_workbook(path)
sheet=work.sheet_by_name(
'sheet1'
) nrows=sheet.nrows
datalist=
for rows in
range
(nrows)
: data=sheet.row_values(rows)
# 第一行是標題
title=datalist[0]
datas=datalist[1:
] new=
for data in datas:
dic=
for i in
range
(len
(data)):
dic[title[i]
]=data[i]
return new
上面是寫成字典形式
[,,
,]
這個時候就不能用unpack了因為已經只是乙個列表了
@data(
*read(
).readexecl1(
'data_execl'))
deftest_01
(self,name)
:print
(name[
'name'
],name[
'password'
])
pytest引數化的話自帶方法
@pytest.mark.parametrize(『引數名』,[引數])
兩個引數的話
@pytest.mark.parametrze(
'引數名1,引數名2',[
['1'
,'111'],
['2'
,'222'
])
#read().readexecl('data_execl')=
# [['1', '111'], ['2', '222'], ['3', '333'], ['4', '444']]
@pytest.mark.parametrize(
'name,password'
,read(
).readexecl(
'data_execl'))
deftest_03
(self,name,password)
:print
(name,password)
#read().readexecl1('data_execl')=
#[, , , ]
@pytest.mark.parametrize(
'name'
,read(
).readexecl1(
'data_execl'))
deftest_03
(self,name)
:print
(name[
'name'
],name[
'password'
])
資料驅動主要還是資料檔案的讀取的問題,給他處理成相應的格式,然後記住一對一原則多對多原則就不難了
@pytest的引數一定要列表巢狀
Pytest和unittest的對比
一 用例編寫規則 1.unittest提供了test cases test suites test fixtures test runner相關的類,讓測試更加明確 方便 可控。使用unittest編寫用例,必須遵守以下規則 1 測試檔案必須先import unittest 2 測試類必須繼承uni...
unittest和pytest的區別
一 用例編寫規則 1.unittest提供了test cases test suites test fixtures test runner相關的類,讓測試更加明確 方便 可控。使用unittest編寫用例,必須遵守以下規則 1 測試檔案必須先import unittest 2 測試類必須繼承uni...
Pytest和Unittest的區別
一 用例編寫規則 1.使用unittest編寫測試用例必須遵循以下規則 1.必須首先 匯入 import unittest 2.測試類必須要繼承 unittest.testcase 3.測試方法必須以test kai開頭 2.pyest是python的第三方測試框架,是基於unittest的擴充套件...