一傻昙、DDT解析參數(shù)
ddt 是第三方模塊彩扔,需安裝虫碉, pip install ddt
DDT包含類的裝飾器ddt和兩個(gè)方法裝飾器data(直接輸入測試數(shù)據(jù))
通常情況下,data中的數(shù)據(jù)按照一個(gè)參數(shù)傳遞給測試用例须板,如果data中含有多個(gè)數(shù)據(jù)兢卵,以元組,列表甜奄,字典等數(shù)據(jù),需要自行在腳本中對數(shù)據(jù)進(jìn)行分解或者使用unpack分解數(shù)據(jù)课兄。
@data(a,b)
那么a和b各運(yùn)行一次用例
@data([a,d],[c,d])
如果沒有@unpack烟阐,那么[a,b]當(dāng)成一個(gè)參數(shù)傳入用例運(yùn)行
如果有@unpack,那么[a,b]被分解開悠抹,按照用例中的兩個(gè)參數(shù)傳遞
1扩淀、測試參數(shù)如下:
login_data=[{"para":{"mobilephone":"18777770000","pwd":"123456"},"method":"get","msg":"登錄成功"},
{"para": {"mobilephone":"18777770000","pwd":"000000"},"method":"get","msg":"用戶名或密碼錯(cuò)誤"},
{"para": {"mobilephone":"? ","pwd":"123456"},"method":"get","msg":"手機(jī)號(hào)不能為空"}]
2、測試用例使用DDT解析參數(shù):
from ddt import ddt,data
#裝飾測試類
@ddt
class TestHttpRequest(unittest.TestCase):
#裝飾測試用例
@data(*login_data)
def test_login_1(self,data):
?? res=HttpRequest(data['url'],data['param']).http_request(data['method'])
?? print("測試結(jié)果:{0}".format(res.json()))
執(zhí)行3條用例
標(biāo)記函數(shù)參數(shù)化(測試用例方法前加測試數(shù)據(jù)):@pytest.mark.parametrize("a,b,expected", testdata)
語法:
ep1 傳入單個(gè)參數(shù)
@pytest.mark.parametrize('參數(shù)名',lists)
ep2 傳入兩個(gè)參數(shù)
('參數(shù)1','參數(shù)2',[(參數(shù)1_data[0],參數(shù)2_data[0]),(參數(shù)1_data[1],參數(shù)2_data[1])]
傳三個(gè)或者更多也是這樣傳卵凑。list的每個(gè)元素都是一個(gè)元祖胜臊,元祖里的每個(gè)元素和按參數(shù)順序一一對應(yīng)。