接口测试 基于 Django 的 Dubbo 接口测试工具平台

大佬喝可乐 · 2020年09月23日 · 122 次阅读

日常工作中会需要对 Dubbo 接口进行调用和测试,之前是通过脚本请求,为了做到通用性,所以弄了个小的测试工具平台,后续会增加流量回放功能,用来支持压测场景。

该平台采用 Django rest framework +VUE 的前后端分离,前端使用了网上的一个开源项目,有需要的可以参考 https://github.com/PanJiaChen/vue-admin-template

项目启动

启动后台项目

git 拉去 master 代码 TestPlatform https://github.com/627886474/TestPlatform

在 settings 中修改你的 mysql 配置

在 config.ini 中填上你 zookeeper 的地址

然后下载相关依赖包

pip install -r package.txt

生成数据库表

python manage.py makemigrations
python manage.py migrate

最后启动后台服务

python manage.py runserver

服务启动成功,接下来 启动前端项目

启动前端项目

git 拉去 master 代码 TestPlatform-web

https://github.com/627886474/TestPlatform-web
进入主目录

npm install
npm run dev

界面演示
注册用户,手机号,邮箱不能重复

注册成功后,登录账号,进入后台管理页面

进入 Dubbo 接口 服务调用菜单,填入相关参数,对于不同 Dubbo 接口的入参说明请参考最后的说明

请求完成后,会有一条请求记录,可以 “一键填充”。这样可以方便你使用别人的请求参数,不用在自己拼接参数

请求参数说明:
一共有四个参数:

service_name: 服务名,如 com.zl.ITestService
dubbo_method: 方法名,如 add
params_type: 入参的类型,这里只有两种 “class” 和"others" ,"class” 表示入参是实体类,“others” 表示是实体类之外的所有类型
params: 方法需要的参数
请求示例:

服务中的方法是 :

Object addStudent(UserAO user)
{
    "service_name":"com.zl.ITestService",
    "dubbo_method":"add",
    "params_type":"class",
    "params":{
        "class":"com.zl.entity.ao.UserAO",
        "school":[
            "1",
            "2"
        ],
        "name":"zl",
        "tuofa":"true"
    }
}

服务中的方法是 :

Object getStudent(Integer id, List<String> name)参数需要使用 [] 包起来
{
    "service_name": "com.zl.ITestService",
    "dubbo_method": "add",
    "params_type":"others",
    "params": [
        123,
        [
            "zl"
        ]
    ]
}

枚举类请求:

Object getStudent(Integer itemId, StudentEnum studentEnum);

枚举类的类名: com.zl.item.entity.StudentEnum

需要使用到的枚举类:GOOD_STUDENT,填写格式如下 :

{
    "service_name": "com.zl.ITestService",
    "dubbo_method": "add",
    "params_type":"others",
    "params": [
        123,{"name": "GOOD_STUDENT", "class": "com.zl.item.entity.StudentEnum "}
    ]
}

常见的异常情况:

1、请求参数异常

请求 Dubbo 接口如果填入的参数有误,会报 no such method 的错误,请检查一下参数是否正常

2、对于入参是 Boolean 类型的数据

在 json 中,直接 使用{“data”:true}即可,但是在 python 请求时需要使用 “true”,加上双引号

如果你遇到了其他的问题欢迎留言

配套教程请查看 :https://blog.csdn.net/zxc19854/article/details/108344069

项目地址: https://github.com/627886474/TestPlatform

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册