python编写测试系统_纯 python 编写的一套 dubbo 测试平台
因组织要求,需要一个Dubbo接口的测试工具,经多方研究,遂决定要写一个不需要编写任何代码,直接在页面上填写数据就能直接运行Dubbo接口的测试工具,类似于Postman编写http接口一样简单。
整个平台采用B/S结构,后台服务采用的是python的django框架
传输方式为 TCP + Hessian
平台没有用到zk,都是直接在前端页面填写IP:PORT直连的
目前实现的功能:
解析相关jar包,把接口、函数、函数参数直接显示在web界面
每个版本接口、函数的对比,并在web界面显示差异
可直接在界面上填写需要的数据,一键完成数据整理、发送,包含返回数据的显示
现已支持java大部分的数据类型,不仅包括基础类型(String、Boolean、Byte、Double、Integer、Date、Void)等;容器类型(Map、HashMap、List、HashSet、Vector)等;还支持Object对象的传递,包含Enum;对于泛型或者一些特殊在运行过程中才知道的对象,web界面可以支持测试人员自定义对象属性
用例的创建
后期准备实现的功能:
用例的断言
测试计划
创建mock数据服务
完全自定义接口、函数及函数参数
接口列表界面
函数列表界面
用例添加和调试界面
自定义数据结构界面
需要考虑的点
由于python的Dict类型,key不支持List和Dict类型,主要是List和Dict类在python中没有实现__hash__,故自定义一个类,实现一个__hash__函数,其他继承这两个类就可以了
class PDict(dict):
def __hash__(self):
return id(self)
class PList(list):
def __hash__(self):
return id(self)
由于前后端传输的类型我们选择是json格式,而且json能存储的类型有限,由于我们在json格式的数据中自定义了一套我们自己的数据结构,后台会把前端传给我们的json数据再进行二次编译,编译成java所需要的各种数据类型
比方说java中的数据类型为:
这里表示有三个参数,第一个参数为Dict类型,第二个参数为String类型,第三个参数为自定义枚举类型
Ljava/util/Map;Ljava/lang/String;Lcom/test/enums/DataAPIEnum;
翻译成前后端都认识的类型为:
[{"valueMetaType": "", "keyChildren": [{"children": [], "type": "String", "name": "String", "metaType": ""}], "name": "Map", "keyType": "String", "valueChildren": [{"metaType": "", "type": "Object", "children": [], "name": "Object"}], "keyMetaType": "", "valueType": "Object"}, {"metaType": "", "type": "String", "children": [], "name": "String"}, {"metaType": "com/test/enums/DataAPIEnum", "type": "Enum", "children": [], "name": "Enum"}]
然后把需要的值填入上述json里面的children字段就好,这个大家看过就好,没准你们就更好的想法也不一定
hessian协议的pack与unpack:这里我参考的是github上大神的代码,做了二次开发,调试过程中也针对性的修改了一些东西,地址:https://github.com/zhouyougit/PyDubbo,
PS
由于重重原因,(哎……
)代码暂时还开源不了,不过大家有兴趣的话,可以一起讨论讨论,知无不言,言无不尽
python编写测试系统_纯 python 编写的一套 dubbo 测试平台相关推荐
- python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例
本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) ...
- python矩阵乘法算法_纯python进行矩阵的相乘运算的方法示例
本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) ...
- python课表查询系统_使用python抓取广西科技大学教务系统课程表
因学校教务系统课程表查询功能累赘,服务器经常挂,同时也不适合手机端查询,所以用python开发爬虫抓取所有课程表,放到我的服务器上面. 本文仅供学习. 特性 中途退出程序再次运行不会抓取到重复课程表 ...
- python 成绩分析系统_用Python编写成绩管理分析系统(故事升级版)
目录 项目总览 生活小故事引入 项目思路 项目实现 功能改善 代码展示 效果演示 项目后期 项目适用 每文一语 项目总览 生活小故事引入 微风和煦,散乱在办公桌上的测验小试卷还有几分"热度& ...
- python颜色识别算法_纯Python编写K-means算法,提取图片中的主体颜色
在文章 今天我用Python手写了一个K-means算法,来完成同样的功能. 聚类是数据挖掘中一种非常重要的学习流派,指将未标注的样本数据中相似的分为同一类,正所谓"物以类聚,人以群分&qu ...
- python银行排队系统_【Python编程特训·连载30】市政务中心排队系统 答案发布
请用你所掌握的Python语言完成"市政务中心排队系统" 难度系数:☆ ☆ ☆ 排队系统,又称叫号排队系统,是一种综合运用计算机.多媒体等设备对用户服务进行有效管理的一种按序进行服 ...
- python制作网页系统_使用python静态网页生成工具pelican快速在github上部署网站博客...
简介 Pelican用Python编写的静态站点生成器.亮点: 使用reStructuredText或Markdown格式直接用编辑器编写内容 简单的CLI工具来(重新)生成站点 易于与分布式版本控制 ...
- python智能办公系统_用 Python 自动化办公能做到哪些有趣或有用的事情?
Python的学习资料,网上随便搜都是大把的 不过那些基本上没什么干货 好的学习资料是系统的,全面的 从实战例子,到工具到源码,都全面的很 片面的学习,你肯定是学不好的 而且,大多数资料都是一堆理论的 ...
- python股票查询系统_使用python获取股票的上市日期等基本信息
之前介绍过一个Baostock的python证券数据平台,如今又增加了新的功能,提供了股票上市日期目,上市状态等信息的获取,也可以查询退市股票的信息. 还是按照之前的惯例,上代码: import ba ...
最新文章
- jQuery对表单元素的取值和赋值操作代码
- 20150309+Linux+LAMP安装-02
- DevOps发展的9个趋势
- 这是一个测试:测试博客在浏览器中是否可以显示数学内容以及代码格式
- SAP Fiori SSL 和 SAML 2.0 配置文档
- python应用体系_python-大型django应用程序体系结构
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- 【Java】计算8+88+888+8888+....前12项的和
- 收获,不止SQL优化——抓住SQL的本质--第二章
- Unity渲染管线-百人计划笔记
- Android 通过软引用实现图片缓存,防止内存溢出
- 飞鸽传书【经典版】(飞鸽传书2011)
- 目标检测_CVPR2020
- 流量压力折射移动互联网困局
- 计算机软件基础自考实践报告,信息作战自考实践报告
- Excel查找重复行
- 为何公众号推送会延迟发送_【微课堂】小程序引流神器—微信公众号营销
- BLE-1の蓝牙4.0协议栈概览
- 逢二进一 、逢八进一、逢十六进一
- 揭开计算机神秘的面纱教学反思,《揭开计算机神秘的面纱》教学设计.doc
热门文章
- 管理软件预警通知(Notification)功能的实现案例分析
- 解决paramiko获取远程脚本延时返回数据的问题
- springboot springmvc 抛出全局异常解决方法
- python 异常处理中try else语句的使用
- 在解决方案中所使用 NuGet 管理软件包依赖
- 避免HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常
- Requirement already satisfied 解决方法
- 如何复制静态文件以使用Webpack构建目录?
- 如何在JavaScript中反转字符串?
- iOS使用shell脚本批量修改属性