1. 判斷是否為ddt數(shù)據(jù)
def read_testcase(yaml_path):
with open(yaml_path,encoding="utf-8") as f:
case_list = yaml.safe_load(f)
if "parametrize" in dict(*case_list).keys(): # 讀取出來(lái)的yaml用例帶有parametrize就說(shuō)明是ddt用例,格式為:[{}]
new_caseinfo = ddt(*case_list)
return new_caseinfo # 將數(shù)據(jù)解包后,返回格式為:[{},{}]
else:
return case_list
2.?處理數(shù)據(jù)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-813170.html
def ddt(caseinfo:dict):
data_list = caseinfo["parametrize"] # 獲取到caseinfo下的parametrize數(shù)據(jù)
len_flag = True # 設(shè)置一個(gè)判斷指標(biāo)
name_len = len(data_list[0]) # 獲取參數(shù)的長(zhǎng)度,即有幾個(gè)參數(shù)
for data in data_list:
if len(data) != name_len: # 判斷獲取到的所有的參數(shù)長(zhǎng)度是否與name_len一致,不一致直接結(jié)束
len_flag = False
print("parametrize數(shù)據(jù)長(zhǎng)度不一致")
break
# 將caseinfo轉(zhuǎn)為str類型方便后續(xù)操作
str_caseinfo = yaml.dump(caseinfo)
new_caseinfo = []
if len_flag: # 當(dāng)長(zhǎng)度一致時(shí),進(jìn)行后續(xù)操作
for x in range(1,len(data_list)): # 從下標(biāo)為1開(kāi)始取行數(shù)據(jù),即排除數(shù)據(jù)名稱行后的就是用例數(shù)據(jù)行
raw_caseinfo = str_caseinfo
for y in range(0,name_len): # 從下標(biāo)為0開(kāi)始取列數(shù)據(jù),即長(zhǎng)度有多少就去多少列
# 處理數(shù)字類型的字符串?dāng)?shù)據(jù)
if isinstance(data_list[x][y],str) and data_list[x][y].isdigit():
data_list[x][y] = "'" + data_list[x][y] + "'" # 轉(zhuǎn)為字符串類型的數(shù)字
raw_caseinfo = raw_caseinfo.replace("$ddt{"+data_list[0][y]+"}",str(data_list[x][y])) # 將獲取到的數(shù)據(jù)寫入
case_list = yaml.safe_load(raw_caseinfo) # 再次進(jìn)行數(shù)據(jù)轉(zhuǎn)換回list
case_list.pop("parametrize")
new_caseinfo.append(case_list)
return new_caseinfo
3. yaml用例中設(shè)置和使用數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-813170.html
-
feature: 測(cè)試模塊4
story: 測(cè)試接口4
title: 驗(yàn)證測(cè)試接口4正常返回
request:
method: post
url: http://192.168.0.1/phpwind/index.php?m=u&c=login&a=dorun
data:
username: $ddt{username}
password: $ddt{password}
parametrize:
- [ "username","password" ]
- [ "ces1","123" ]
- [ "ces2",123 ]
- [ "ces","ces" ]
到了這里,關(guān)于從0開(kāi)始python學(xué)習(xí)-52.pytest之ddt數(shù)據(jù)封裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!