python3 提取http請求response中的某個值


在使用python3 request做接口測試的時候,想獲取response的json中的某個值做斷言時,發現request好像沒有相關的方法

所以只好自己找寫一個了。在我看來,json就是一個字典,只不過是字典里面嵌套着字典、列表,列表里面有嵌套着字典。

所以我們跟根據上面的思路來解決這個問題。首先josn就是一個字典,所以第一個判斷就是它是不是字典,是的話就用dict.items()

輸入key和values,然后再判斷values類型,如果是list,那就把list每個值取出來,再做判斷。如此自我調用,實現取值。

 

class getvales():
def getdict(dict1, values):
global values1,va #定義全局變量
values1 = values
for k, v in dict1.items(): #把字典的key和values變成數組
if k == values:
va = v

elif list is type(v): #判斷類型是不是list
getvales.getlsit(v)

elif type(v) is dict:
getvales.getdict(v, values1)

else:
print(str(k) + ":----" + str(v))

return va

def getlsit(list1):
for i in list1:
if list is type(i):
getvales.getlsit(i)

elif dict is type(i):
getvales.getdict(i, values1)
else:
print(list1)


if __name__ == "__main__":
dict1 = {'result': {'content': [
{'areaCode': '4XXXXXXX00', 'branchFee': 100.0, 'checkStatus': 'check_no', 'completionRate48': False,
'consignee': '劉先生', 'consigneeTel': '1XXXXXXXX64', 'countdown': 0, 'createDate': '2017-12-01 14:52:52',
'goods': '布皮藝沙發', 'id': 'WAQ2Wm2AjlEdwlRU', 'installFee': 40.0, 'items': 1, 'jingdong': False,
'jingdongConfirm': False, 'matchType': '人工匹配', 'matchingFailureReason': '此單xXXXXXX后再做安排',
'msfCheck': '未核銷', 'orderSourceCode': '', 'orgName': '一智XXXXXXXX業部', 'packingNumber': 2, 'payArrive': 0.0,
'payCash': 0.0, 'payMonth': 120.0, 'payReturn': 0.0, 'payType': '月結', 'pickUpAddress': 'XXXXXXX庫',
'pickUpTel': '13532120095', 'pickUpTime': '', 'readOnly': False, 'receiveAddress': '廣東省廣州市增城區XXXX',
'remark': '', 'replaceCharge': 0.0, 'serviceType': '配送到家並安裝', 'shipper': 'XXXXX有限公司', 'taskStatus': '待分配',
'taskStatusShow': '待分配', 'taskType': '調度任務', 'tmail': False, 'trunkEndDate': '2017-12-01 15:27:06',
'volumes': 1.3, 'waybillId': '1zt18824149564', 'weights': 0.0, 'worker': 'XXX', 'workerTel': '13XXXXXXXX37'}],
'first': True, 'last': True, 'number': 0, 'numberOfElements': 1, 'size': 10, 'totalElements': 1,
'totalPages': 1}}
abc = getvales.getdict(dict1, "waybillId")
print(abc)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM