之前寫過了Grpc服務(wù)開發(fā)和接口測試初探【Java】,中間耽擱了一些時間,Go版本的gRPC測試開發(fā)實踐才有時間學習使用。其中也是由于自己Go語言不夠熟悉導(dǎo)致的。之前有段時間想暫時放棄Go語言的學習,導(dǎo)致了Go的生疏,原因是從Groovy到Java性能。

十余年的雙陽網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整雙陽建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“雙陽網(wǎng)站設(shè)計”,“雙陽網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
回歸正題,Go語言版本的gRPC實踐相對Java來說是比較簡單的,但是總體的工具鏈是比較復(fù)雜的,可能是因為Go生態(tài)目前相比Java還是比較匱乏吧。下面我先簡述一下大致的步驟:
以上步驟親自操作可能會遇到一些小問題,我本人搜到的教程什么的也是亂七八糟,踩了一些坑。我沒有整理出一個親自實踐之后的可行的教程,原因有二:
Go語言的gRPC的 proto 編寫跟Java大致一致,只有一個報名的參數(shù)不太一樣。下面是我的 Hello.proto 內(nèi)容:
這里主要 go_package 網(wǎng)上搜到的配置方式有些不一樣,我沒有全都嘗試,大家在搜索的資料時候,盡量先看看 syntax 這個參數(shù)的值,以及文章教程寫作的時間,如果距離現(xiàn)在太久了,我建議直接關(guān)掉。搜索引擎有過濾功能,可以過濾掉過時的教程。
這里Go語言gRPC的一點優(yōu)勢,就是在一個項目中即可實現(xiàn),Java需要先弄一個SDK這樣。Go語言的gRPC的代碼可以通過生成代碼命令中的參數(shù)實現(xiàn)指定路徑。我是放在了和 proto 文件的同級目錄。
服務(wù)端代碼也是比較格式化的內(nèi)容,如下:
其中 pb.RegisterHelloServiceServer(s, Ser{}) 如果報錯,請檢查自己安裝的工具 protoc-gen-go 或者 protoc-gen-gofast 版本,一般提取報錯 message 搜索也能得到解決辦法。
下面是客戶端的代碼,由于學藝不精,其中大部分參數(shù)的含義目前我也不是很清楚,特別是基于 stream 的請求響應(yīng)的方式使用。后面我先把Java的學完,再回過頭來看Go的,按照這個順序?qū)W習和分享。
服務(wù)端輸出:
忘記打日志了。沒有輸出
客戶端輸出:
Go語言的gRPC測試開發(fā)實踐已經(jīng)完事兒,大概率上我不會在工作中使用Go作為主力gRPC測試語言,后面測試實踐內(nèi)容還是會以Java為主。
之前寫過了Go語言gorm框架MySQL實踐,其中對gorm框架在操作MySQL的各種基礎(chǔ)實踐,下面分享一下如何使用gorm框架對MySQL直接進行性能測試的簡單實踐。
這里我使用了一個原始的Go語言版本的 FunTester 測試框架,現(xiàn)在只有一個基本的方法,實在是因為Go語言特性太強了。框架設(shè)計的主要思路之一就是利用Go語言的閉包和方法參數(shù)特性,將一個 func() 當做性能測試的主題,通過不斷運行這個 func() 來實現(xiàn)性能測試。當然還有另外一個思路就是運行一個多線程任務(wù)類,類似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象類,這樣可以設(shè)置一些類的屬性,綁定一些測試資源,適配更多的測試場景。
下面演示select的性能測試,這里我用了隨機ID查詢的場景。
這里我使用從35開始遞增的ID進行刪除。
這里使用了select的用例部分,隨機ID,然后更新name字段,隨機10個長度的字符串。
這里用到了 FunTester 字段都是隨機生成。
到這里可以看出,性能測試框架用到的都是gorm框架的基礎(chǔ)API使用,這里MySQL連接池的管理工作完全交給了gorm框架完成,看資料說非常牛逼,我們只需要設(shè)置幾個參數(shù)。這個使用體現(xiàn)很像 HttpClient 設(shè)置 HTTP 連接池類似,這里我們也可以看出這些優(yōu)秀的框架使用起來都是非常簡單的。
PS:關(guān)于gorm的基礎(chǔ)使用的請參考上一期的文章Go語言gorm框架MySQL實踐。
在正常的測試中,當我們需要進行接口測試時,通常使用接口調(diào)試工具,如postman進行接口測試
目前我在嘗試使用Go語言進行接口測試,使用的庫均為Go自帶的庫。
注:當前采用的接口為時事新聞接口,每天可以請求100次,需要的同學,可以自行使用。
接口像是一個公司里面的領(lǐng)導(dǎo),他會定義一些通用規(guī)范,只設(shè)計規(guī)范,而不實現(xiàn)規(guī)范。
go語言的接口,是一種新的類型定義,它把所有的具有共性的方法定義在一起,任何其他類型只要實現(xiàn)了這些方法就是實現(xiàn)了這個接口。
語法格式和方法非常類似。
在接口定義中定義,若干個空方法。這些方法都具有通用性。
下面我定義一個USB接口,有讀read和寫write兩個方法,再定義一個電腦Computer和一個手機Mobile來實現(xiàn)這個接口。
USB接口
Computer結(jié)構(gòu)體
Mobile結(jié)構(gòu)體
Computer實現(xiàn)USB接口方法
Mobile實現(xiàn)USB接口方法
測試
運行結(jié)果
下面我們定義一個OpenClose接口,里面有兩個方法open和close,定義個Door結(jié)構(gòu)體,實現(xiàn)其中一個方法。
新聞標題:go語言怎么進行接口測試 go 接口測試
地址分享:http://chinadenli.net/article30/hgpsso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、手機網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站建設(shè)、、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)