嘗試用python/requests偷懶(1)-拼接資訊寫測試測試報告
阿新 • • 發佈:2022-05-27
背景:
每次發版需要寫測試報告,報告中有一項是關於版本號的資訊,需要將公司平臺頁面的表格內容,拼接、貼上到word。
如圖
需求:
將以上圖片資訊組合成以下文字格式:
系統名稱+版本號/檔案路徑(圖片列)
MD5碼:MD5碼(圖片列)
注:系統名稱+版本號抓包後在response中可獲取
解決程式碼:
import requests # 網上找的處理requests庫返回json型別(在python接收為多維字典)的方法 def get_target_value(key, dic, tmp_list): """ :param key: 目標key值 :param dic: JSON資料 :param tmp_list: 用於儲存獲取的資料 :return: list """ if not isinstance(dic, dict) or not isinstance(tmp_list, list): # 對傳入資料進行格式校驗 return 'argv[1] not an dict or argv[-1] not an list ' if key in dic.keys(): tmp_list.append(dic[key]) # 傳入資料存在則存入tmp_list for value in dic.values(): # 傳入資料不符合則對其value值進行遍歷 if isinstance(value, dict): get_target_value(key, value, tmp_list) # 傳入資料的value值是字典,則直接呼叫自身 elif isinstance(value, (list, tuple)): _get_value(key, value, tmp_list) # 傳入資料的value值是列表或者元組,則呼叫_get_value return tmp_list def _get_value(key, val, tmp_list): for val_ in val: if isinstance(val_, dict): get_target_value(key, val_, tmp_list) # 傳入資料的value值是字典,則呼叫get_target_value elif isinstance(val_, (list, tuple)): _get_value(key, val_, tmp_list) # 傳入資料的value值是列表或者元組,則呼叫自身 # 獲取版本資訊方法 def get_reportinfo(ywpturl, authinfo): # 必要的header資訊 ywptheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36', 'Cookie': authinfo } # 呼叫檢視版本列表介面 r = requests.get(ywpturl, headers=ywptheaders) # 將介面返回的列表儲存,知識點,返回結果在python為字典型別,此字典為多維字典 resraw = r.json() # 用網上方法獲取字典的值,存到陣列 md5s = get_target_value('md5',resraw,[]) paths = get_target_value('filedirectory',resraw,[]) filenames = get_target_value('filename',resraw,[]) sysnames = get_target_value('sysname',resraw,[]) print("最終結果是----------------------------------------------------------------------") # 拼接、組合以上陣列,列印輸出 for path, filename, md5, sysname in zip(paths, filenames, md5s, sysnames): print(sysname+path+'/'+filename) print("MD5碼:", md5) # 設定變數,接收每次版本的請求地址和登入態 url = "http://abc.com/pub/Excel?ftptype=21.0.134.99&morepaths=666666666E766%%%%%86%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F" cookie = 'this.is.token.SESSIONID=youcannotsee' # 呼叫獲取版本資訊方法 get_reportinfo(url, cookie)
結果: