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数据服务

完全自定义接口、函数及函数参数

接口列表界面

f352483f-4a3b-43a8-bddf-7c751afe65cd.jpeg!large

函数列表界面

34c06671-f7b2-4ae3-a754-3138c7f791dc.jpeg!large

用例添加和调试界面

aea13ba4-5ff9-48d7-92c8-627d341e9232.jpeg!large

自定义数据结构界面

3036c9f4-eed6-4d4c-8ead-9d84d0507e3d.jpeg!large

需要考虑的点

由于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

由于重重原因,(哎……

1f629.svg )代码暂时还开源不了,不过大家有兴趣的话,可以一起讨论讨论,知无不言,言无不尽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值