mock接口測試


一、關於Mock測試
1、什么是Mock測試?

Mock測試就是在測試過程中,對於某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以便測試的測試方法。

2、為什么要進行Mock測試?
Mock是為了解決不同單元之間由於偶合而難以開發、測試的問題。所以,Mock既能出現在單元測試、集成測試,系統測試過程中。
Mock最大的功能是幫你把單元測試的耦合分解開,如果你的代碼對另一個類或接口有依賴,它能模擬這些依賴。比如一段代碼有這樣的依賴:

 

 

 當我們需要測試A類的時候,如果沒有Mock,則我們需要把整個依賴數都構建出來,而使用Mock的話,就可以把結果分解,如下圖:
image

3、Mock對象適用的場景

  • 前后端項目中,后端接口尚未開發完成。
  • 被測單元依賴的對象較難模擬(比如模擬支付時的各種異常條件)

4、Mock測試的優勢
(1)團隊並行工作
有了Mock后,前后端人員只需要定義好接口文檔,就可以開始並行工作了,互不影響,只在最后聯調階段需要合作;后端與后端之間如果有接口耦合,也同樣能被Mock解決;不會出現一個團隊等待另一個團隊的情況。
(2)測試覆蓋度
假如有一個接口,有100個不同類型的返回,我們需要測試它在不同返回下,系統是否能夠正常響應,但是現實很難模擬。有了mock,想要什么自己設計。

5、Mock測試的不足

mock的模擬行為與真實行為可能存在差異(返回結果是自己構造的),其結果就是雖然基於mock的測試通過了,但是基於真實對象的測試可能會存在失敗。

Mock 一個 Server ,構造一個假的服務返回預期的結果,也是為了進行自己的測試。主要適用於接口&性能測試,Mock 方案和程序使用的語言無關,可以用 Java 實現,也可以用 Python 實現等。

6、Mock測試注意事項

1)測試完畢后,上線前,請一定確保 為了mock而做的相關代碼/配置文件的修改,已經完全恢復。
2)mock接口只能做主流程聯調/異常返回測試,不要過分依賴mock接口進行測試。當mock接口切換成實際接口后,測試/開發必須把之前的測試重新走一遍。

二、Mock測試方法

1、mocorunner下載

地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/

 

 

 

2、moco-runner使用

步驟:
①新建一個目錄mocorunner,將moco-runner-1.3.0-standalone.jar件放入這個目錄下

②編寫XXX.json文件並保存

③命令行:進入mocorunner目錄,執行java -jar ./moco-runner-1.3.0-standalone.jar 協議 -p 8888 -c json文件

 

注意:mocorunner是熱部署,服務不用重啟,即可完成升級操作

這是一個jar包,只要執行該jar包,指定配置文件,就可開啟一個http服務器提供服務,並且修改配置文件后也無需重啟服務,支持動態加載。

我使用的是moco-runner-1.3.0-standalone.jar,運行方式如下:

java -jar ./moco-runner-1.3.0-standalone.jar http -p 8888 -c demo.json

java -jar moco-runner-1.3.0-standalone.jar start -p 8888 -c XXX.json

具體其他使用方法請參照官方文檔:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md

3、模擬接口開發核心內容

演示:第一個mock接口demo

1)在mocorunner目錄下,新建一個文件demo.json,然后編輯,編輯完文件,保存。如下圖

 

demo.json文件內容示例如下:

[
	{
		"description":"mock接口demo",
		"request":{
			"uri":"/demo"
		},
		"response":{
			"text":"第一個mock接口demo"
		}
	}
]

2)命令行進入mocorunner目錄,

輸入命令:java -jar ./moco-runner-1.3.0-standalone.jar http -p 8888 -c demo.json

3)下面進行測試,

方法1:打開瀏覽器輸入:http://localhost:8888/demo

方法2:使用jmeter

接口地址:http://localhost:8888/demo

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM