python測試dubbo接口實用篇

python測試dubbo接口

1.背景及想法
背景:開發的工程項目代碼複雜,每次在執行單測或者接口黑盒測試時候,GUI編譯運行時間太長,不利於提高測試效率。
想法:探索一下python測試dubbo接口的實用性。
2.想法及思路
考察三種python dubbo實現:python+hessian,python+dubbo_telnet,python+telnetlib(後兩種原理一樣)前面需要安裝python-hessian擴展包,前者是通過http協議請求;後者是通過模擬控制檯命令行實現對dubbo接口測試。
dubbo rpc調用方式:Dubbo本身支持多種遠程調用方式,例如Dubbo RPC(二進制序列化 + tcp協議)、http invoker(二進制序列化 + http協議)、hessian(二進制序列化 + http協議)、WebServices (文本序列化 + http協議)等。Dubbo是支持hessian+http協議調用的,hessian是一種二進制序列化的方式。
共同點:都需要dubbo服務ip、port、接口服務路徑、接口服務包對應的實現方法、方法參數
目標,更少的參數去實現某個接口方法單測,總體思路是通過接口服務包名+headers去請求url獲取html結果,通過xsls方式解析html獲取指定標籤結果,獲取ip、port,然後建立dubbo鏈接,根據“ls com.xxx.xx”獲取方法,最後根據所有必要參數進行填充完成接口測試:
3.簡單時序圖:
在這裏插入圖片描述

4.python+dubbo_telnet實現
原理:核心是模擬telnet命令遠程控制服務器,通過輸入操作命令,服務器進行執行。
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到服務器。終端使用者可以在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制檯上輸入一樣。可以在本地就能控制服務器。要開始一個telnet會話,必須輸入用戶名和密碼來登錄服務器。Telnet是常用的遠程控制Web服務器的方法
方法1 步驟:

  1. pip install dubbo_telnet 安裝工具包 或者 下載好工具包 解壓到python安裝路徑 /ananconda2/lib/python3.7/site_packages 也可。

2.通過selenium進行對web進行模擬登錄、定位元素並模擬按鈕點擊事件進行查找,定位服務提供者的ip和port
在這裏插入圖片描述

  1. 組裝控制檯的執行命令
    代碼:
    在這裏插入圖片描述

示例:
ls com.wacai.loan.panama.api.PreRepayAdvService
invoke com.wacai.loan.panama.api.PreRepayAdvService.queryPreRepayAdvApp(80186116)

4.建立Telnet服務鏈接,並進行寫入invoke等執行命令發起請求,最後獲取返回結果。
在這裏插入圖片描述

5.不同請求方式的執行效果對比

本地執行效果,如圖:
在這裏插入圖片描述

本地命令行執行效果一致,如圖:
在這裏插入圖片描述

6.附加
參數種類編寫方式
1.一個或者對個參數類型(非對象)
2.對象類型 需要加class類對象路徑
如下:
1.params = ‘928653657,“app.membership.able”’
2.param = {
“class”: “com.wacai.loan.panama.api.dto.MemberFeeCalRequest”,
“uid”: 82407387,
“installment”: 12,
“loanAmount”: 1010000 }
目前存在的問題:
dubbo-admin網站的服務ip地址與k2服務的地址不一致(非必現,此時需要k2查看服務ip和port)
每次請求selenium就會重新打開瀏覽器頁面,有點繁瑣(後續優化)
遇到的問題:
1.驅動加載不了,驅動需要單獨下載,驅動的版本號與本地谷歌瀏覽器的版本保持一致;
2.部分頁面授權彈窗登錄,不好使用selenium進行定位元素實現交互登錄
3.參數對象組裝問題
4.等…
telnet命令:
Please input “help [command]” show detail.
status [-l] - Show status.
pwd - Print working default service.
trace [service] [method] [times] - Trace the service.
exit - Exit the telnet.
help [command] - Show help.
invoke [service.]method(args) - Invoke the service method.
count [service] [method] [times] - Count the service.
clear [lines] - Clear screen.
ls [-l] [service] - List services and methods.
log level - Change log level or show log
ps [-l] [port] - Print server ports and connections.
cd [service] - Change default service.

方法2請求web核心代碼

在這裏插入圖片描述

重點優化部分—參數格式書寫,如圖:

在這裏插入圖片描述
附加:如果不是對象與普通參數混搭,比如是對象參數,那麼還是按照最上面的參數構造

歡迎評論區留言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章