简单脚本:将postman导出的json文件输出为文本

简单脚本:将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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值