天天看點

python實作基于RPC協定的接口自動化測試

作者:碼同學軟體測試

每天進步一點點,關注我們哦,每天分享測試技術文章

本文章出自【碼同學軟體測試】

碼同學公衆号:自動化軟體測試

碼同學抖音号:小碼哥聊軟體測試

01

什麼是RPC

RPC(Remote Procedure Call)遠端過程調用協定是一個用于建立适當架構的協定。從本質上講,它使一台機器上的程式能夠調用另一台機器上的子程式,而不會意識到它是遠端的。

RPC 是一種軟體通信協定,一個程式可以用來向位于網絡上另一台計算機的程式請求服務,而不必了解網絡的細節。RPC 被用來像本地系統一樣調用遠端系統上的其他程序。過程調用有時也被稱為函數調用或子程式調用

02

RPC架構

RPC本身是一套協定規範,遵循這一套規範實作的架構比較流行的有以下幾個:

  • grpc架構

gRPC是由 google開發的一個高性能、通用的開源RPC架構,主要面向移動應用開發且基于HTTP/2協定标準而設計,同時支援大多數流行的程式設計語言。gRPC基于 HTTP/2協定傳輸

  • dubbo架構

Dubbo是阿裡巴巴公司開源的一個高性能優秀的服務架構,使得應用可通過高性能的 RPC 實作服務的輸出和輸入功能,可以和Spring架構無縫內建。

Dubbo是一款高性能、輕量級的開源Java RPC架構,它提供了三大核心能力:

① 面向接口的遠端方法調用

② 智能容錯和負載均衡

③ 服務自動注冊和發現

  • thrift架構

Thrift是一種接口描述語言和二進制通訊協定。原由Facebook于2007年開發,2008年正式送出Apache基金會托管,成為Apache下的開源項目。

Thrift是一個RPC通訊架構,采用自定義的二進制通訊協定設計。相比于傳統的HTTP協定,效率更高,傳輸占用帶寬更小。另外,Thrift是跨語言的

  • Hetty 架構

Hetty 是一款建構于 Netty 和 Hessian 基礎上的高性能的 RPC 架構

Hessian 是一款基于 HTTP 協定的 RPC 架構,采用的是二進制 RPC 協定,非常輕量級 ,且速度較快。

Netty 是一款基于事件驅動的 NIO 架構,用以快速開發高性能、高可靠性的網絡伺服器和用戶端程式。Hetty 用戶端完全由 Hessian 實作,隻是使用 Netty 重新實作了服務端

03

基于grpc架構服務的接口測試

01

建立一個grpc服務接口

注意在公司裡你們的grpc服務可能并不是采用python去實作的,課上咱們為了測試grpc的接口,使用python先建立grpc的服務接口。

  • 安裝依賴庫
python實作基于RPC協定的接口自動化測試
  • 建立grpc接口協定文檔
  • 在項目下建立一個grpc_study包,包下建立一個add.proto檔案,将下述内容複制進去
python實作基于RPC協定的接口自動化測試
  • 生成服務代碼
  • 終端下進入proto檔案所在目錄,執行下述指令:
python實作基于RPC協定的接口自動化測試
  • 建立服務端
python實作基于RPC協定的接口自動化測試

02調用grpc接口用戶端

以下代碼就是調用第一步中的grpc接口的

python實作基于RPC協定的接口自動化測試

03接口架構中适配grpc封裝

1、封裝底層channel初始化

在config目錄下建立grpc.yml,其中寫上grpc接口的位址:

python實作基于RPC協定的接口自動化測試

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

python實作基于RPC協定的接口自動化測試

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

python實作基于RPC協定的接口自動化測試

2、封裝grpc接口調用

在api包下建立一個grpcapi的包,将grpc的定義proto檔案拷貝進去,然後在終端下進入grpcapi目錄執行下述指令

python實作基于RPC協定的接口自動化測試

該目錄下檔案如下:

python實作基于RPC協定的接口自動化測試

修改add_pb2_grpc.py中的導入如下:

python實作基于RPC協定的接口自動化測試

免費領取 碼同學軟體測試 課程筆記+超多學習資料+完整視訊+最新面試題,可以轉發文章 + 私信「碼同學666」擷取資料哦

根據上述代碼封裝接口調用,建立一個api_client.py,寫上如下代碼就是grpc提供的add接口的調用方法

python實作基于RPC協定的接口自動化測試

3、編寫grpc接口測試用例

在testcases包下建立一個grpcapi包,建立一個test_grpc_api.py,編寫針對add接口的測試用例如下:

python實作基于RPC協定的接口自動化測試

執行測試

04

基于dubbo架構服務的接口測試

dubbo服務管理位址:

http://**.***.**.***:****/dubbo-admin-2.6.0

使用者名和密碼都是root

01

dubbo服務管理簡單使用

先設定為中文,右側選擇語言

python實作基于RPC協定的接口自動化測試

選擇服務治理-->服務

python實作基于RPC協定的接口自動化測試
python實作基于RPC協定的接口自動化測試

點開MarketService,再點ip和端口,打開如下:

python實作基于RPC協定的接口自動化測試

02

實戰接口說明

第1步裡我們看到了兩個接口,exchange和lottery,下面是這兩個接口的業務說明

  • exchange

業務是積分兌換,該接口的參數是一個對象,對象類型對應背景java代碼中的某個類cn.testfan.dubbo.model.ExchangeRequest,這個類對象對應的屬性如下,這些屬性其實就是我們的參數

python實作基于RPC協定的接口自動化測試
  • lottery

業務是抽獎,參數有兩個,都是數字,沒有參數名稱,按照順序,第一個表示參與的活動id,第二個表示使用者id

03

python調用dubbo接口

  • 安裝第三方庫
python實作基于RPC協定的接口自動化測試
  • dubbo接口調用
python實作基于RPC協定的接口自動化測試

04

接口架構中适配dubbo封裝

1、封裝底層dubbo初始化

在config目錄下建立dubbo.yml檔案,寫上如下内容

python實作基于RPC協定的接口自動化測試

在client.py裡增加下述代碼

python實作基于RPC協定的接口自動化測試

2、封裝api層

dubbo接口通常是按照服務進行劃分,一個服務下有多個接口,針對該服務建立對象,然後調用各個接口。

在api包下建立dubboapi的包,針對market服務建立一個market_api.py檔案,寫上如下代碼:

python實作基于RPC協定的接口自動化測試

3、測試用例層

在testcases包下建立dubboapi包,在其下建立test_market_service.py,寫上如下代碼

python實作基于RPC協定的接口自動化測試

執行測試

免費領取碼同學軟體測試課程筆記+超多學習資料+學習完整視訊,可以關注我們公衆号哦:自動化軟體測試

本文著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。