Python 实现自动化测试 dubbo 协议接口
前言
在工作或学习过程中,可能会遇到后端服务里有使用 dubbo 协议实现的接口,dubbo 协议接口的测试方法不同于 http/https 类型的接口,不能简单使用request.post的方法来完成自动化测试。
如果需要对 dubbo 协议的接口进行自动化测试,你会想到哪种解决方案呢?
今天的分享将提供一种方案由 Python 来实现 dubbo 协议的接口自动化测试。
准备工作:
- 安装Python3+的运行环境
- 使用python -m pip install telnetlib安装依赖包
PS:使用依赖包telnetlib是想通过 Python 来模拟 Linux 下对 dubbo 接口调用的命令行操作
Python 实现源码
import json
import telnetlib
class Dubbo(telnetlib.Telnet):
prompt = 'dubbo>'
def __init__(self, host=None, port=0):
super().__init__(host, port)
self.write(b'\n')
def command(self, flag, str_=''):
data = self.read_until(flag.encode())
self.write(str_.encode() + b'\n')
return data
def invoke(self, service_name, method_name):
command_str = "invoke {0}.{1}()".format(service_name, method_name)
self.command(Dubbo.prompt, command_str)
data = self.command(Dubbo.prompt, "")
data = json.loads(data.decode(Dubbo.coding, errors='ignore').split('\n')[0].strip())
if __name__ == '__main__':
conn = Dubbo('serviceIp', port)
result = conn.invoke(
"serviceName",
"serviceName.method"
)
print(result)
源码重点详解
1、代码段:
command_str = “invoke {0}.{1}()”.format(service_name, method_name)
(1)、invoke 为调用 dubbo 接口的命令名称;
(2)、{0} 为 invoke 命令后需要接的第一个参数,它的值将由传入进来的 service_name 取代,一般是传入服务名称,这里的写法只是为了占位;
(3)、{1} 为 invoke 命令后需要接的第二个参数,它的值将由传入进来的 method_name 取代,一般是传入被调用的方法名称,这里的写法只是为了占位;
(4)、() 为 invoke 命令后调用 method_name 方法时需要的格式,类似 Python 中如果想要调用一个函数是需要加上 () 才能调用成功的,如果有参数还需要在 () 里传入对应的参数;
(5)、问题:如果被调用的dubbo服务的方法需要传入对应的参数,怎么处理呢?
答:
将代码改写为:“invoke {0}{1}({2})”.format(service_name,method_name,param_data),需要在 () 里添加占位符,并在调用该方法时传入对应的参数,一般是 key:value 格式的参数,即 Python 中的字典格式的数据;
2、代码段:
conn = Dubbo(‘serviceIp’, port)
(1)、serviceIp:被调用服务所属的IP地址;
(2)、port:被调用服务所对应的可访问的外部暴露的端口;
PS:如果端口号为内部端口,这种方式调用会报错,必须是可访问的外部暴露端口。
资源分享【这份资料必须领取~】
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】
相关文章
- 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
- python: easyocr的安装和使用(easyocr 1.6.2 / Python 3.7.15 )
- centos8(linux):编译升级python版本:从python3.6到python3.11
- Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
- Python编程语言学习:python的列表的特殊应用之一行命令实现if判断中的两类判断
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- 成功解决tensorflow.python.framework.errors_impl.InvalidArgumentError: slice index 1 of dimension 0 out o
- Python其实超简单:只需记住3个、4类、5大、6种即可轻松入门
- 〖Python自动化办公篇㉑〗- python实现邮件自动化 - 定时发送邮件
- 从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的
- Python微信公众号教程基础篇——收发文本消息
- Python设计模式 - 模板模式
- python 多进程并发demo
- python自动化测试学习-Python测试框架之unittest和pytest
- 4款火热的Python自动化测试框架,谁才是你的唯一?
- Python 求两个 list 的交集、并集、差集、和集
- Python -- 限流 throttle
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- Python:字典翻转输出
- Python .py 文件打包成 .exe 文件(Windows平台,python 3.x)
- 用Python做数据分析之数据筛选及分类汇总