简单脚本:将postman导出的json文件输出为文本
在工作中需求梳理大量接口并整理在postman工具上进行接口测试,但想归纳成文档及支持接口自动化等测试任务,则需要将接口梳理成文档。
由于涉及数量太多,手动整理很耗费时间,为了将json文件导出为文本,查阅了较多资料及对比json格式,现已实现了一个小脚本,有需要各位大佬可自行拓展。。时间有限就不细写思路了~~
注意:
1、将脚本和转换的json文件放在同级目录
2、如果记录的目录层级较多,遍历比较多,目前没时间实现~~只能先简单处理只有一级目录的postman的json文件,如下
脚本示例
输出文档
实现脚本
#2021-11-07 15:44
#dawin 序
import datetime
import json
import xlwt
# 遍历 json 数组的 key 列表,获取request体数据并写入csv文件
def change_json_Totext():
# 简单处理只有一级目录的postman文件
fr = open("postman_collection.json", 'r', encoding='utf-8')
content = fr.read() # json字符串,f.read()读取文件所有内容,返回str类型,f.readlines()一行一行读,返回一个list,每行为list元素
dict = json.loads(content)
i = 0
json_keys =[]
json_keys.append(['name', 'method', 'mode', 'body', 'url'])
for key in dict['item']:
i = i + 1
try:
json_key = []
# 将 Python 对象编码成 JSON 字符串
key1 = json.dumps(key)
# 解码 JSON 数据,返回 Python 字段的数据类型
k1 = json.loads(key1)
# 获取接口名称
json_key.append(k1['name'])
request = k1['request']
# 获取请求方法
json_key.append(request['method'])
# 获取请求体
body = json.dumps(request['body'])
body = json.loads(body)
json_key.append(body['mode'])
raw = body['mode']
json_key.append(body[raw])
# 获取请求url
url = json.dumps(request['url'])
url = json.loads(url)
json_key.append(url['raw'])
json_keys.append(json_key)
except:
# 记录错误参数
print("第[", i, "]数组参数有误:", key)
continue
print("data=", json_keys)
return json_keys
def excel_rite(data):
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
#第一种样式,设置背景颜色及字体
style1 = xlwt.XFStyle() # Create the Pattern
pattern = xlwt.Pattern() # Create the Pattern
pattern.boldbold = True # 黑体
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 7 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style1.pattern = pattern # Add Pattern to Style
#第二种样式,设置字体
style2 = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman'
font.bold = True # 黑体
# font.underline = True # 下划线
# font.italic = True # 斜体字
style2.font = font # 设定样式
# 写入文档,遍历第几行数组
for i in range(0, len(data)):
# 获取第i行j列数组的value值
for j in range(0, len(data[i])):
try:
# 文档仅能写入str类型参数,加入判断
if isinstance(data[i][j], list):
data[i][j] = json.dumps(data[i][j])
if isinstance(data[i][j], dict):
data[i][j] = json.dumps(data[i][j])
# 设置表头样式
if i==0:
worksheet.write(i, j, data[i][j], style1) # 写入带样式1
worksheet.col(j).width = 6000 # 设置单元宽度
else:
worksheet.write(i, j, data[i][j], style2) # 写入带样式2
except:
# 记录错误数组
print("[", i,",",j, "]数组写入失败:", data[i][j])
continue
# 加入时间戳
dt = datetime.datetime.now().strftime('%Y%m%d-%H%M')
po_name_date = "poatman接口转换"+dt+".xls"
# 保存文件
workbook.save(po_name_date)
if __name__ == '__main__':
data = change_json_Totext()
excel_rite(data)
大文件用openpyxl