利用Tkinter做的自动生成JSONSchema的小工具
前面讲到可以使用JSONSchema做json数据校验, 但是每个接口数据都手动写jsonschema太痛苦了, 就写了个小脚本,可以直接复制接口文档的mock数据然后生成一个简单的jsonschema,然后根据需要再修改
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : jsonUtil.py
# @Author: Lcy
# @Date : 2018/8/16
# @Desc : from tkinter import *
import json class My_GUI(): def __init__(self): self.window = Tk() # 设置主窗口属性(窗口名, 大小, 位置, 背景色等)
self.window.title('JSON处理工具')
# window.geometry('800x600+50+50')
self.window['bg'] = 'GhostWhite'
self.window.attributes('-alpha', 1) #添加两个文本框
self.input_text = Text(self.window)
self.input_text['bg'] = 'pink'
self.input_text.grid(row=0, column=0, sticky=W) self.result_labe = Text(self.window)
self.result_labe['bg'] = 'blue'
self.result_labe.grid(row=0, column=2) self.to_json_button = Button(self.window, text='to_json', bg='lightblue', width=10, command=self.to_json)
self.to_json_button.grid(row=1, column=1) self.window.mainloop() # def set_window(self, window):
def to_json(self):
#置空text
self.result_labe.delete(0.0, END) def to_jsonschema(json_data, result):
'''
递归生成jsonschema
:return:
'''
if isinstance(json_data, dict):
is_null = True
result.append('{')
result.append("'type': 'object',")
result.append("'properties': {")
for k, v in json_data.items():
is_null = False
result.append("'%s':" % k)
to_jsonschema(v, result)
result.append(',')
if not is_null:
result.pop()
result.append('}')
result.append('}')
elif isinstance(json_data, list):
result.append('{')
result.append("'type': 'array',")
result.append("'items': ")
to_jsonschema(json_data[0], result)
result.append('}')
elif isinstance(json_data, int):
result.append("{")
result.append("'type': 'number'")
result.append('}')
elif isinstance(json_data, str):
result.append("{")
result.append("'type': 'string'")
result.append('}') return "".join(result) json_data = self.input_text.get(0.0, END).strip().replace("\n", "")
result = []
try:
testdata = to_jsonschema(eval(json_data), result)
params = eval(testdata)
self.result_labe.insert(1.0, json.dumps(params, indent=4))
except Exception as e:
self.result_labe.insert(1.0, '输入的JSON数据有问题, 请检查') my_gui = My_GUI()
效果如下:

简单做了个小Demo, 后续优化, 这样可以直接把生成的jsonschema拿来用了。
再做的自动化点的话也可以把自动化测试的那些东西填进去, 生成模板修改后接着再继续自动化使用进行接口测试,那样可以做就是会比较重了, 还是根据自己需要进行相关测试策略设计。
利用Tkinter做的自动生成JSONSchema的小工具的更多相关文章
- Unity 自动生成组件索引类工具
Unity 自动生成组件索引类工具 需求由来 我们在写UI类时 需要获取预设中的组件 joystick = transform.Find("joystick"); backgrou ...
- 利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类
一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...
- 利用Eclipse的JPA自动生成注解实体
新公司用的SSH(springmvc)框架,看代码的时候,发现没有hbm.xml文件,全部使用的注解形式.在一次闲聊的时候问同事,这么多entity 写起来不麻烦么.同事说根据数据库自动生成的.于是 ...
- 利用jsplumb和碰撞检测自动生成流程图
使用jsplumb构建流程图模型时,有一个需求要求,选项可以从选项表中拖拽到指定容器,并且两个选项要接触到的时候才能连接起来,不接触不能连接.效果图如下 略丑- 因为这里用到了拖拽,拖放功能,所以用到 ...
- [转]用Python做一个自动生成读表代码的小脚本
写在开始(本片文章不是写给小白的,至少你应该知道一些常识!) 大家在Unity开发中,肯定会把一些数据放到配置文件中,尤其是大一点的项目,每次开发一个新功能的时候,都要重复的写那些读表代码.非常烦.来 ...
- c# 利用t4模板,自动生成Model类
我们在用ORM(比如dapper)的时候,很多时候都需要自己写Model层(当然也有很多orm框架自带了这种功能,比如ef),特别是表里字段比较多的时候,一个Model要写半天,而且Model如果用于 ...
- 自动生成Mapper和Entity工具MybatisGenerator的使用
新建一个XML文件crmGeneratorConfig.xml,文件具体内容如下.把MybatisGenerator.zip解压出来,把MybatisGenerator文件夹复制到Eclipse安装目 ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
- ASP.NET MVC5利用EF,反向自动生成数据库
1.在Model类里面,写好相应的属性. using System; using System.Collections.Generic; using System.Linq; using System ...
随机推荐
- web网页按钮如何制作
1:用矩形形状工具画一个矩形 2 : 加描边 3:三键+N新建图层 前景色变成白色,白色到透明的渐变,选择径向渐变. 4:为了使自然,按住ALT键,使渐变扩大,和矩形保持一直,之后向上调整一些. 5: ...
- Hugo hexo 搭建博客系列1:自己的服务器
hexo jekyll https://hexo.io/zh-cn/ http://theme-next.iissnan.com/getting-started.html Hexo 是高效的静态站点生 ...
- DB2恢复一例 SQL0928N
环境是AIX 6.1.DB2版本号9.7.0.7 首先查看db2主进程是否存在 ps -ef|grep db2sys 若不存在使用db2start打开数据库 备份介质为冷备数据源, cd 到介质所在文 ...
- JVM调优- 学习笔记(转)
http://blog.csdn.net/fenglibing/article/details/6321453 GC学习笔记 这是我公司同事的GC学习笔记,写得蛮详细的,由浅入深,循序渐进,让人一看就 ...
- eclipse 连接 hadoop集群
1 网上找插件 或者 自己编译 放到eclipse plugin里面 2 重启eclipse 配置MapReduceLocation 通吃端口为9001 9000 看你自己的配置 3 新建mapRed ...
- Razor里写函数
asp.net mvc的视图里使用Razor来书写服务器代码,人尽皆知.可以常常见到里面写上for循环语句,输出一大堆东东,牛逼得很. 可是,如果循环语句还不能满足我们的要求,需要定义一个函数来调用, ...
- python is == 的区别, 编码与解码.深浅拷贝
一. is == 的区别 双等表示的是判断是否相等, 注意. 这个双等比较的是具体的值.而不是内存地址 is 比较的是地址 编码回顾 除了了ASCII码以外, 其他信息不能直接转换 编码和解码的时 ...
- java servlet中上传文件的简单实现(基于第三方jar)
这里的案例使用了两种文件上传的组件.分别介绍 1.使用JSPSmartUpload完成上传 package test_servlet_package; import java.io.File; imp ...
- Python菜鸟之路:Python基础-线程池注释
import sys import threading import Queue import traceback # 定义一些Exception,用于自定义异常处理 class NoResultsP ...
- 洛谷 1641 [SCOI2010]生成字符串
题目戳这里 一句话题意 求\(C_{m+n}^{m}\)-\(C_{m+n}^{m-1}\) Solution 巨说这个题目很水 标签居然还有字符串? 但是我还不很会用逆元真的太菜了,还好此题模数P为 ...