Python结合telnet命令实现自动化测试dubbo接口

在这里插入图片描述
一、python语言也可以实现对dubbo接口的调用与测试,可以使用python+hessian结合的方式,也可以使用python+telnet结合的方式模拟命令行的模式来实现对dubbo接口的测试;

二、网上关于python+hessian协议的博客比较多,本人试了试,终究是没有在本机上测试通过,所以选择了:python+telnet的方法在编译器里实现了Python源生代码对dubbo接口调用测试;

三、具体源代码如下:

import json
import telnetlib
 
 
class Dubbo(telnetlib.Telnet):
 
    prompt = 'dubbo>'
    coding = 'utf-8'
 
    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())
        return data
 
if __name__ == '__main__':
    conn = Dubbo('serviceIp', port)
    result = conn.invoke(
        "serviceName",
        "serviceName.method"
    )
    print(result)

1、代码讲解第20行:

num20行:“invoke {0}{1}()”.format(service_name,method_name)

(1)、invoke为调用dubbo接口的命令名称;

(2)、{0}为invoke命令后需要接的第一个参数,它的值将由传入进来的service_name取代,一般是传入服务名称,这里的写法只是为了占位;

(3)、{1}为invoke命令后需要接的第二个参数,它的值将由传入进来的method_name取代,一般是传入被调用的方法名称,这里的写法只是为了占位;

(4)、()为invoke命令后需要接的第三个参数,此处的例子表示的是这个dubbo服务被调用的方法,是不需要传入参数就能直接调用成功的,虽然不需要传入参数,但是必需写上();

(5)、问题:如果被调用的dubbo服务的方法需要传入对应的参数,怎么处理呢?

答:num20行代码改写为:“invoke {0}{1}({2})”.format(service_name,method_name,param_data),需要在第三个参数处添加占位符,并在调用该方法时传入对应的参数,一般是key:value格式的参数,即python中的字典格式的数据;

2、代码讲解第28行:

conn = Dubbo(‘serviceIp’, port)

(1)serviceIp:被调用服务所属的IP地址;

(2)port:被调用服务所对应的可访问的外部暴露的端口;

注意:如果端口号为内部端口,这种方式调用会报错。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值