利用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 ...
随机推荐
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向
很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...
- c++打印蛇形矩阵
一个m*n的矩阵里按照下图形式填充,最后形成的矩阵即为蛇形矩阵,下图是m=4, n =5时的蛇形矩阵: 方法一:逐层循环 #include <iostream> using namespa ...
- who 查看系统登录用户
who 查看所有登录用户 whoami 查看自己的登陆名 w users last
- 【机器学习详解】SMO算法剖析(转载)
[机器学习详解]SMO算法剖析 转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754 CSDN−勿在浮沙筑高台 本文力 ...
- OpenCv for Android 环境搭建
最近工作需要这样的功能 如下图 要在类似功能在android上实现 然后实现成这样 这两张图来自博客:图像校正—透视变换 可惜他用的是C/C++语言写的调用opencv,我参考了下他写的方案就想到了a ...
- 工具类之Condition
再次看到Condition,第一感觉还是觉得它和Mutex的功能是一样的,没必要存在.心里这么想,其实自己也知道怎么可能多余呢?老老实实的再分析一下代码,这次一定要把理解出来的内容记下来!都怪平时写代 ...
- 【转】使用Python学习selenium测试工具
出处:https://my.oschina.net/u/1433482/blog/633231?fromerr=vaxqh9bn
- 嵌入式开发之手机arm汇总---科普手机arm
http://www.leiphone.com/news/201406/1102-zzl-arm.html
- Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin
前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...
- 旋转卡壳求两个凸包最近距离poj3608
#include <iostream> #include <cmath> #include <vector> #include <string.h> # ...