python實(shí)現(xiàn)基于RPC協(xié)議的接口自動化測試
01什么是RPC
RPC(Remote Procedure Call)遠(yuǎn)程過程調(diào)用協(xié)議是一個用于建立適當(dāng)框架的協(xié)議。從本質(zhì)上講,它使一臺機(jī)器上的程序能夠調(diào)用另一臺機(jī)器上的子程序,而不會意識到它是遠(yuǎn)程的。
RPC 是一種軟件通信協(xié)議,一個程序可以用來向位于網(wǎng)絡(luò)上另一臺計(jì)算機(jī)的程序請求服務(wù),而不必了解網(wǎng)絡(luò)的細(xì)節(jié)。RPC 被用來像本地系統(tǒng)一樣調(diào)用遠(yuǎn)程系統(tǒng)上的其他進(jìn)程。過程調(diào)用有時也被稱為函數(shù)調(diào)用或子程序調(diào)用
02RPC框架
RPC本身是一套協(xié)議規(guī)范,遵循這一套規(guī)范實(shí)現(xiàn)的框架比較流行的有以下幾個:
grpc框架
每天進(jìn)步一點(diǎn)點(diǎn),關(guān)注我們哦,每天分享測試技術(shù)文章
本文章出自【碼同學(xué)軟件測試】
碼同學(xué)公眾號:自動化軟件測試,領(lǐng)取資料可加:Matongxue_10
碼同學(xué)抖音號:小碼哥聊軟件測試
gRPC是由 google開發(fā)的一個高性能、通用的開源RPC框架,主要面向移動應(yīng)用開發(fā)且基于HTTP/2協(xié)議標(biāo)準(zhǔn)而設(shè)計(jì),同時支持大多數(shù)流行的編程語言。gRPC基于 HTTP/2協(xié)議傳輸
dubbo框架
Dubbo是阿里巴巴公司開源的一個高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的 RPC 實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和Spring框架無縫集成。
Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:
① 面向接口的遠(yuǎn)程方法調(diào)用
② 智能容錯和負(fù)載均衡
③ 服務(wù)自動注冊和發(fā)現(xiàn)
thrift框架
Thrift是一種接口描述語言和二進(jìn)制通訊協(xié)議。原由Facebook于2007年開發(fā),2008年正式提交Apache基金會托管,成為Apache下的開源項(xiàng)目。
Thrift是一個RPC通訊框架,采用自定義的二進(jìn)制通訊協(xié)議設(shè)計(jì)。相比于傳統(tǒng)的HTTP協(xié)議,效率更高,傳輸占用帶寬更小。另外,Thrift是跨語言的
Hetty 框架
Hetty 是一款構(gòu)建于?Netty??和?Hessian?基礎(chǔ)上的高性能的 RPC 框架
Hessian 是一款基于 HTTP 協(xié)議的 RPC 框架,采用的是二進(jìn)制 RPC 協(xié)議,非常輕量級 ,且速度較快。
Netty 是一款基于事件驅(qū)動的 NIO 框架,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。Hetty 客戶端完全由 Hessian 實(shí)現(xiàn),只是使用 Netty 重新實(shí)現(xiàn)了服務(wù)端
03基于grpc框架服務(wù)的接口測試
01創(chuàng)建一個grpc服務(wù)接口
注意在公司里你們的grpc服務(wù)可能并不是采用python去實(shí)現(xiàn)的,課上咱們?yōu)榱藴y試grpc的接口,使用python先創(chuàng)建grpc的服務(wù)接口。
安裝依賴庫

創(chuàng)建grpc接口協(xié)議文檔
在項(xiàng)目下創(chuàng)建一個grpc_study包,包下創(chuàng)建一個add.proto文件,將下述內(nèi)容復(fù)制進(jìn)去

生成服務(wù)代碼
終端下進(jìn)入proto文件所在目錄,執(zhí)行下述命令:

創(chuàng)建服務(wù)端

以下代碼就是調(diào)用第一步中的grpc接口的
1、封裝底層channel初始化
在config目錄下創(chuàng)建grpc.yml,其中寫上grpc接口的地址:

在common目錄下的client中增加下述代碼:

在conftes.py中增加下述代碼:

2、封裝grpc接口調(diào)用
在api包下創(chuàng)建一個grpcapi的包,將grpc的定義proto文件拷貝進(jìn)去,然后在終端下進(jìn)入grpcapi目錄執(zhí)行下述命令

該目錄下文件如下:

修改add_pb2_grpc.py中的導(dǎo)入如下:
根據(jù)上述代碼封裝接口調(diào)用,創(chuàng)建一個api_client.py,寫上如下代碼就是grpc提供的add接口的調(diào)用方法
免費(fèi)領(lǐng)取碼同學(xué)軟件測試課程筆記+超多學(xué)習(xí)資料+完整視頻+面試題,可加微信:Matongxue_10
3、編寫grpc接口測試用例
在testcases包下創(chuàng)建一個grpcapi包,創(chuàng)建一個test_grpc_api.py,編寫針對add接口的測試用例如下:
執(zhí)行測試
04基于dubbo框架服務(wù)的接口測試
dubbo服務(wù)管理地址:
http://**.***.**.***:****/dubbo-admin-2.6.0
用戶名和密碼都是root
01dubbo服務(wù)管理簡單使用
先設(shè)置為中文,右側(cè)選擇語言

選擇服務(wù)治理-->服務(wù)


點(diǎn)開MarketService,再點(diǎn)ip和端口,打開如下:

02實(shí)戰(zhàn)接口說明
第1步里我們看到了兩個接口,exchange和lottery,下面是這兩個接口的業(yè)務(wù)說明
exchange
業(yè)務(wù)是積分兌換,該接口的參數(shù)是一個對象,對象類型對應(yīng)后臺java代碼中的某個類cn.testfan.dubbo.model.ExchangeRequest,這個類對象對應(yīng)的屬性如下,這些屬性其實(shí)就是我們的參數(shù)
lottery
業(yè)務(wù)是抽獎,參數(shù)有兩個,都是數(shù)字,沒有參數(shù)名稱,按照順序,第一個表示參與的活動id,第二個表示用戶id
03python調(diào)用dubbo接口
安裝第三方庫
dubbo接口調(diào)用

04接口框架中適配dubbo封裝
1、封裝底層dubbo初始化
在config目錄下創(chuàng)建dubbo.yml文件,寫上如下內(nèi)容

在client.py里增加下述代碼

2、封裝api層
dubbo接口通常是按照服務(wù)進(jìn)行劃分,一個服務(wù)下有多個接口,針對該服務(wù)創(chuàng)建對象,然后調(diào)用各個接口。
在api包下創(chuàng)建dubboapi的包,針對market服務(wù)創(chuàng)建一個market_api.py文件,寫上如下代碼:

3、測試用例層
在testcases包下創(chuàng)建dubboapi包,在其下創(chuàng)建test_market_service.py,寫上如下代碼
執(zhí)行測試
免費(fèi)領(lǐng)取碼同學(xué)軟件測試課程筆記+超多學(xué)習(xí)資料+學(xué)習(xí)完整視頻 ? 可加:Matongxue_8/關(guān)注碼同學(xué)公眾號:自動化軟件測試
本文著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。