將Swagger中所有介面地址用Python寫入Excel中
阿新 • • 發佈:2021-10-25
我們公司所有介面文件放在swagger中,我一直在想辦法把所有介面地址給弄下來放到Excel中,方便jmeter迴圈跑介面時配置CSV檔案使用,經過幾天的研究,終於解決了該問題,再也不用一個一個去複製下來了。
1.首先將swagger儲存為文件
點選左上角IP地址,會出現json文件,右鍵另存為,可以儲存為.json格式的文件,儲存修改文件字尾為txt;
2.解析json,分析你要取介面地址的內容所在位置,找到提取資料的方式
隨便找個json解析工具,通過解析我發現所有介面資訊都放在paths這個key裡面,每個介面地址為一個子key,如下圖:
3.使用Python指令碼提取資料並寫入Excel中
我負責的模組介面共有910個,比較多,為了將來使用方便,除介面地址外,順便提取了請求方式,介面分類,介面描述,方便以後在Excel表格中分類整理取想要的介面;Python指令碼如下:
import json import xlwt api_excel = xlwt.Workbook(encoding='utf-8') # 建立一個文件 api_sheet = api_excel.add_sheet('CRM介面') # 新增一個sheet json_file = open('D:/Test/api-docs.txt', encoding='utf-8') # 開啟儲存的swagger文字文件api_data = json.load(json_file) # 將文件json內容轉換為Python物件 api = api_data['paths'] # 取swagger檔案內容中的path,檔案中path是鍵名 path_list = [] # 建立介面地址空列表 method_list = [] # 建立請求方式空列表 tags_list = [] # 建立介面分類空列表 summary_list = [] # 建立介面描述空列表 for path in api.keys(): # 迴圈取key values = api[path] # 根據key獲取值method = tuple(values.keys())[0] # 獲取請求方式,檔案中請求方式是key path_list.append(path) # 將path寫入介面地址列表中 method_list.append(method) # 將method寫入請求方式列表中 if method == 'get': # key為get時從get裡面取分類和描述,key為post時從post裡面取分類和描述 tags = values['get']['tags'][0] # 獲取介面分類 summary = values['get']['summary'] # 獲取介面描述 tags_list.append(tags) # 將介面分類寫入列表中 summary_list.append(summary) # 將介面描述寫入列表中 if method == 'post': tags = values['post']['tags'][0] summary = values['post']['summary'] tags_list.append(tags) summary_list.append(summary) for i in range(len(path_list)): # 將介面path迴圈寫入第一列 api_sheet.write(i, 0, path_list[i]) for j in range(len(method_list)): # 將請求方式迴圈寫入第二列 api_sheet.write(j, 1, method_list[j]) for m in range(len(tags_list)): # 將介面分類迴圈寫入第三列 api_sheet.write(m, 2, tags_list[m]) for n in range(len(summary_list)): # 將介面描述迴圈寫入第四列 api_sheet.write(n, 3, summary_list[n]) api_excel.save('D:\\Test\\CRM介面列表.xls') # 儲存檔案
執行結果: