1. 程式人生 > 其它 >嘗試用python/requests偷懶(1)-拼接資訊寫測試測試報告

嘗試用python/requests偷懶(1)-拼接資訊寫測試測試報告

背景:

每次發版需要寫測試報告,報告中有一項是關於版本號的資訊,需要將公司平臺頁面的表格內容,拼接、貼上到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)

結果: