前言

在工作或学习过程中,可能会遇到后端服务里有使用 dubbo 协议实现的接口,dubbo 协议接口的测试方法不同于 http/https 类型的接口,不能简单使用request.post的方法来完成自动化测试。

如果需要对 dubbo 协议的接口进行自动化测试,你会想到哪种解决方案呢?

今天的分享将提供一种方案由 Python 来实现 dubbo 协议的接口自动化测试。

准备工作:

  • 安装Python3+的运行环境

  • 使用python -m pip install telnetlib安装依赖包

PS:使用依赖包telnetlib是想通过 Python 来模拟 Linux 下对 dubbo 接口调用的命令行操作

Python 实现源码

import json
import telnetlibclass 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 datadef 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:如果端口号为内部端口,这种方式调用会报错,必须是可访问的外部暴露端口。


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

Python 实现自动化测试 dubbo 协议接口相关推荐

  1. Python 实现 dubbo 协议接口自动化测试

    前言 python 语言也可以实现对 dubbo协议的接口进行调用与测试,可以使用 python+hessian 结合的方式,也可以使用 python+telnet 结合的方式模拟命令行的模式来实现对 ...

  2. Python3如何实现dubbo协议接口自动化测试

    在自动化测试脚本编写过程中,当遇到后端服务里有使用 dubbo 协议实现的接口,这个时候需要注意一下,dubbo 协议接口的测试方法不同于 http/https 类型的接口 ,简单的使用 reques ...

  3. 基于Dubbo协议的接口测试

    一.Dubbo协议 Dubbo架构的接口一般有四大模块: provider:服务提供方,给注册中心和监控方提供服务 registry:注册中心 zookeeper,接收消费方和服务提供方提供的服务 C ...

  4. 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架

    基于python+Testlink+Jenkins实现的接口自动化测试框架   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishouke 欢 ...

  5. python自动化测试-简单实现接口自动化测试(基于python)

    原标题:简单实现接口自动化测试(基于python) 一.简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测 ...

  6. python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试

    前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,m ...

  7. python web自动化测试框架搭建(功能接口)——功能测试模块

    功能测试使用selenium,模块有: 1.futil: 公共方法,如元素高亮显示 # coding=utf-8 """高亮显示元素""" ...

  8. 【Python自动化测试26】接口自动化测试实战六_pytest框架+allure讲解

    文章目录 一.前言 二.pytest讲解 2.1 什么是pytest? 2.2 为什么使用pytest? 2.3 使用pytest 2.4 pytest的运行方式 2.5 pytest高级特性 2.5 ...

  9. python+requests+unittest+HTMLTestRunner构建接口自动化测试框架(四)测试用例执行

    python+requests+unittest+HTMLTestRunner构建接口自动化测试框架(一)了解基础框架,读取配置文件 python+requests+unittest+HTMLTest ...

最新文章

  1. 小程序仿安卓动画滑动效果滑动动画效果实现
  2. AngularJS 最佳实践
  3. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)
  4. 机器人学习--室内定位的通信学科背景方法
  5. 在阿里云函数计算上部署.NET Core 3.1
  6. 1.rabbitmq 集群版安装及使用nginx进行四层负载均衡设置
  7. Dropbox推独立应用,公司估值已达100亿美元
  8. UVa 129 - Krypton Factor(回溯法)
  9. python 一维数组所有元素是否大于_利用Python进行数据分析(5) NumPy基础: ndarray索引和切片...
  10. 金立手机又推新品!翻盖手机A326发布 意图复刻经典
  11. 存储类、链接、内存管理
  12. stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
  13. Pr 视频效果:变换
  14. EasyCamera海康摄像机向EasyDarwin云平台推送音视频数据的缓存设计
  15. 金融分析(三)------联合分布,边缘分布,条件概率密度
  16. 手机端追剧神器,最新最火电影免费看,非常牛批!
  17. 视频教程-Python数据结构与算法视频教程-Python
  18. 获取token的一些方法
  19. 从git下载代码到本地
  20. 魔兽修改默认服务器,魔兽怎么设置默认服务器

热门文章

  1. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(3月8日)...
  2. 企业管理低代码—无代码平台的7个技巧
  3. 颜色大全 颜色名称和颜色值
  4. 组态王上位机西门子1200PID温度PID恒压
  5. 深度学习MRI重建综述
  6. Apache的三种MPM模式比较:prefork,worker,event
  7. 配置化表单FormRender初尝试
  8. 软考高级哪个更容易过
  9. 解决Windows 10错误代码0x800f0908
  10. Python中Gradient Boosting Machine(GBM)方法以及调参详解